$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r56190 - in branches/release/libs/spirit/doc/html: . spirit spirit/abstracts spirit/karma spirit/karma/performance_measurements spirit/karma/performance_measurements/numeric_performance spirit/karma/quick_reference spirit/karma/quick_reference/primitive_generators spirit/karma/reference spirit/karma/reference/auxiliary spirit/karma/reference/binary spirit/karma/reference/char spirit/karma/reference/directive spirit/karma/reference/generator_concepts spirit/karma/reference/numeric spirit/karma/reference/operator spirit/karma/reference/stream spirit/karma/reference/string spirit/karma/tutorials spirit/lex spirit/lex/abstracts spirit/lex/abstracts/lexer_primitives spirit/lex/quick_reference spirit/lex/reference spirit/lex/reference/lexer_concepts spirit/lex/reference/primitives spirit/lex/tutorials spirit/notes spirit/qi spirit/qi/quick_reference spirit/qi/quick_reference/qi_parsers spirit/qi/reference spirit/qi/reference/auxiliary spirit/qi/reference/binary spirit/qi/reference/char spirit/qi/reference/directive spirit/qi/reference/numeric spirit/qi/reference/operator spirit/qi/reference/parser_concepts spirit/qi/reference/string spirit/qi/tutorials spirit/structure spirit/support
From: hartmut.kaiser_at_[hidden]
Date: 2009-09-14 12:52:02
Author: hkaiser
Date: 2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
New Revision: 56190
URL: http://svn.boost.org/trac/boost/changeset/56190
Log:
Spirit: replacing docs
Added:
   branches/release/libs/spirit/doc/html/spirit/abstracts/
   branches/release/libs/spirit/doc/html/spirit/abstracts.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/acknowledgments.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/faq.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/introduction.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/
   branches/release/libs/spirit/doc/html/spirit/karma.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/
   branches/release/libs/spirit/doc/html/spirit/karma/reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/char/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/string/
   branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_attributes.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/
   branches/release/libs/spirit/doc/html/spirit/lex.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/
   branches/release/libs/spirit/doc/html/spirit/lex/reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lex_basics.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/
   branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/token.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/reference/tokendef.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials/
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/notes/
   branches/release/libs/spirit/doc/html/spirit/notes.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/notes/style_guide.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/preface.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/
   branches/release/libs/spirit/doc/html/spirit/qi.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/
   branches/release/libs/spirit/doc/html/spirit/qi/reference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/char/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/string/
   branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/references.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/repository.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/structure/
   branches/release/libs/spirit/doc/html/spirit/structure.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/structure/include.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/support/
   branches/release/libs/spirit/doc/html/spirit/support.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html   (contents, props changed)
   branches/release/libs/spirit/doc/html/spirit/what_s_new.html   (contents, props changed)
Text files modified: 
   branches/release/libs/spirit/doc/html/index.html |   552 +++++++++------------------------------ 
   1 files changed, 130 insertions(+), 422 deletions(-)
Modified: branches/release/libs/spirit/doc/html/index.html
==============================================================================
--- branches/release/libs/spirit/doc/html/index.html	(original)
+++ branches/release/libs/spirit/doc/html/index.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -1,11 +1,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Spirit 2.0</title>
+<title>Spirit 2.1</title>
 <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
-<link rel="start" href="index.html" title="Spirit 2.0">
-<link rel="next" href="spirit/what_s_new.html" title="What's New">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="index.html" title="Spirit 2.1">
+<link rel="next" href="spirit/preface.html" title="Preface">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -17,12 +17,12 @@
 <td align="center">More</td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="spirit/what_s_new.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
-<div class="article" lang="en">
+<div class="spirit-nav"><a accesskey="n" href="spirit/preface.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="article" title="Spirit 2.1">
 <div class="titlepage">
 <div>
 <div><h2 class="title">
-<a name="spirit"></a>Spirit 2.0</h2></div>
+<a name="spirit"></a>Spirit 2.1</h2></div>
 <div><div class="authorgroup">
 <div class="author"><h3 class="author">
 <span class="firstname">Joel</span> <span class="surname">de Guzman</span>
@@ -31,10 +31,10 @@
 <span class="firstname">Hartmut</span> <span class="surname">Kaiser</span>
 </h3></div>
 </div></div>
-<div><p class="copyright">Copyright © 2001-2008 Joel de Guzman,
-      Hartmut Kaiser</p></div>
-<div><div class="legalnotice">
-<a name="id386666"></a><p>
+<div><p class="copyright">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser</p></div>
+<div><div class="legalnotice" title="Legal Notice">
+<a name="id585949"></a><p>
         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)
       </p>
@@ -45,81 +45,117 @@
 <div class="toc">
 <p><b>Table of Contents</b></p>
 <dl>
-<dt><span class="section">Preface</span></dt>
+<dt><span class="section">Preface</span></dt>
 <dt><span class="section">What's New</span></dt>
 <dt><span class="section">Introduction</span></dt>
-<dt><span class="section">Qi and Karma</span></dt>
-<dd><dl>
-<dt><span class="section">Tutorials</span></dt>
-<dd><dl>
-<dt><span class="section">Quick Start</span></dt>
-<dt><span class="section">Warming up</span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.semantic_actions">Semantic
-        Actions</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.complex___our_first_complex_parser">Complex
+<dt><span class="section">Structure</span></dt>
+<dd><dl><dt><span class="section">Include</span></dt></dl></dd>
+<dt><span class="section">Abstracts</span></dt>
+<dd><dl>
+<dt><span class="section">Syntax Diagram</span></dt>
+<dt><span class="section"><a href="spirit/abstracts/parsing_expression_grammar.html">Parsing
+      Expression Grammar</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Qi - Writing Parsers</span></dt>
+<dd><dl>
+<dt><span class="section">Tutorials</span></dt>
+<dd><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="spirit/qi/tutorials/complex___our_first_complex_parser.html">Complex
         - Our first complex parser</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.sum___adding_numbers">Sum
-        - adding numbers</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.number_list___stuffing_numbers_into_a_std__vector">Number
+<dt><span class="section"><a href="spirit/qi/tutorials/sum___adding_numbers.html">Sum - adding
+        numbers</a></span></dt>
+<dt><span class="section"><a href="spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html">Number
         List - stuffing numbers into a std::vector</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.number_list_redux___list_syntax">Number
+<dt><span class="section"><a href="spirit/qi/tutorials/number_list_redux___list_syntax.html">Number
         List Redux - list syntax</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.number_list_attribute___one_more__with_style">Number
+<dt><span class="section"><a href="spirit/qi/tutorials/number_list_attribute___one_more__with_style.html">Number
         List Attribute - one more, with style</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.roman_numerals">Roman
-        Numerals</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.employee___parsing_into_structs">Employee
+<dt><span class="section">Roman Numerals</span></dt>
+<dt><span class="section"><a href="spirit/qi/tutorials/employee___parsing_into_structs.html">Employee
         - Parsing into structs</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.mini_xml___asts_">Mini
-        XML - ASTs!</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma.html#spirit.qi_and_karma.tutorials.mini_xml___error_handling">Mini
+<dt><span class="section">Mini XML - ASTs!</span></dt>
+<dt><span class="section"><a href="spirit/qi/tutorials/mini_xml___error_handling.html">Mini
         XML - Error Handling</a></span></dt>
 </dl></dd>
-<dt><span class="section">Abstracts</span></dt>
+<dt><span class="section">Quick Reference</span></dt>
 <dd><dl>
-<dt><span class="section"><a href="spirit/qi_and_karma/abstracts.html#spirit.qi_and_karma.abstracts.parsing_expression_grammar">Parsing
-        Expression Grammar</a></span></dt>
-<dt><span class="section">Parsing</span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma/abstracts/parsing_and_generating.html">Parsing
-        and Generating</a></span></dt>
-<dt><span class="section">Primitives</span></dt>
-<dt><span class="section">Operators</span></dt>
-<dt><span class="section">Attributes</span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma/abstracts/semantic_actions.html">Semantic
+<dt><span class="section">Common Notation</span></dt>
+<dt><span class="section">Qi Parsers</span></dt>
+<dt><span class="section"><a href="spirit/qi/quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="spirit/qi/quick_reference/semantic_actions.html">Semantic
         Actions</a></span></dt>
-<dt><span class="section">Directives</span></dt>
-<dt><span class="section">Rules</span></dt>
-<dt><span class="section">Grammars</span></dt>
-<dt><span class="section">Debugging</span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma/abstracts/mini_xml___error_handling.html">Mini
-        XML - Error Handling</a></span></dt>
-<dt><span class="section"><a href="spirit/qi_and_karma/abstracts/parse_trees_and_asts.html">Parse
-        Trees and ASTs</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
 </dl></dd>
-<dt><span class="section">Quick Reference</span></dt>
-<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Reference</span></dt>
 <dd><dl>
-<dt><span class="section">Concepts</span></dt>
-<dt><span class="section">Char</span></dt>
-<dt><span class="section">String</span></dt>
-<dt><span class="section">Numeric</span></dt>
-<dt><span class="section">Binary</span></dt>
-<dt><span class="section">Directive</span></dt>
-<dt><span class="section">Action</span></dt>
-<dt><span class="section">Nonterminal</span></dt>
-<dt><span class="section">Operators</span></dt>
-<dt><span class="section">Stream</span></dt>
-<dt><span class="section">Auxiliary</span></dt>
-<dt><span class="section">Debug</span></dt>
+<dt><span class="section">Parser Concepts</span></dt>
+<dt><span class="section">Basics</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Char</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Numeric</span></dt>
+<dt><span class="section">Operator</span></dt>
+<dt><span class="section">String</span></dt>
+</dl></dd>
+</dl></dd>
+<dt><span class="section"> Karma - Writing Generators</span></dt>
+<dd><dl>
+<dt><span class="section">Tutorials</span></dt>
+<dd><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="spirit/karma/tutorials/karma_complex.html"> Complex - A
+        first more complex generator</a></span></dt>
+<dt><span class="section"><a href="spirit/karma/tutorials/karma_attributes.html"> Understanding
+        Generator Attributes</a></span></dt>
+<dt><span class="section"><a href="spirit/karma/tutorials/karma_easier_complex.html"> Complex
+        - Made easier</a></span></dt>
+</dl></dd>
+<dt><span class="section">Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="spirit/karma/quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="spirit/karma/quick_reference/primitive_generators.html">
+        Karma Generators</a></span></dt>
+<dt><span class="section"><a href="spirit/karma/quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="spirit/karma/quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
 </dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="spirit/karma/reference/generator_concepts.html">Generator
+        Concepts</a></span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"> Char</span></dt>
+<dt><span class="section">String</span></dt>
+<dt><span class="section"> Numeric</span></dt>
+<dt><span class="section">Stream</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Operator</span></dt>
+</dl></dd>
+<dt><span class="section">Performance Measurements</span></dt>
+<dd><dl><dt><span class="section"><a href="spirit/karma/performance_measurements/numeric_performance.html">
+        Performance of Numeric Generators</a></span></dt></dl></dd>
 </dl></dd>
-<dt><span class="section"> Spirit.Lex</span></dt>
+<dt><span class="section"> Lex - Writing Lexical Analyzers</span></dt>
 <dd><dl>
-<dt><span class="section"> Introduction to Spirit.Lex</span></dt>
+<dt><span class="section"> Introduction to Spirit.Lex</span></dt>
 <dt><span class="section"><a href="spirit/lex/tutorials.html"> <span class="emphasis"><em>Spirit.Lex</em></span>
       Tutorials</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="spirit/lex/tutorials.html#spirit.lex.tutorials.lexer_tutorials"> <span class="emphasis"><em>Spirit.Lex</em></span>
+<dt><span class="section"><a href="spirit/lex/tutorials/lexer_tutorials.html"> <span class="emphasis"><em>Spirit.Lex</em></span>
         Tutorials Overview</a></span></dt>
 <dt><span class="section"><a href="spirit/lex/tutorials/lexer_quickstart1.html"> Quickstart
         1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a></span></dt>
@@ -130,7 +166,7 @@
 </dl></dd>
 <dt><span class="section"> Abstracts</span></dt>
 <dd><dl>
-<dt><span class="section">Lexer Primitives</span></dt>
+<dt><span class="section">Lexer Primitives</span></dt>
 <dt><span class="section"><a href="spirit/lex/abstracts/lexer_tokenizing.html"> Tokenizing
         Input Data</a></span></dt>
 <dt><span class="section"><a href="spirit/lex/abstracts/lexer_semantic_actions.html"> Lexer
@@ -143,379 +179,51 @@
 <dt><span class="section"> Lexer States</span></dt>
 </dl></dd>
 <dt><span class="section"> Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="spirit/lex/quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="spirit/lex/quick_reference/lexers.html"> Primitive Lexer
+        Components</a></span></dt>
+<dt><span class="section"><a href="spirit/lex/quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></dd>
 <dt><span class="section"> Reference</span></dt>
 <dd><dl>
-<dt><span class="section"> Concepts</span></dt>
-<dt><span class="section">Lexer Class</span></dt>
-<dt><span class="section">Token Class</span></dt>
-<dt><span class="section">TokenDef Class</span></dt>
-<dt><span class="section">TokenSet Class</span></dt>
+<dt><span class="section"> Lexer Concepts</span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"><a href="spirit/lex/reference/primitives.html"> Token definition
+        Primitives</a></span></dt>
+<dt><span class="section"> Lexer Class</span></dt>
+<dt><span class="section"> Token Class</span></dt>
+<dt><span class="section"> TokenDef Class</span></dt>
 </dl></dd>
 </dl></dd>
-<dt><span class="section">FAQ</span></dt>
+<dt><span class="section"> Supporting libraries</span></dt>
+<dd><dl><dt><span class="section"> The multi pass iterator</span></dt></dl></dd>
+<dt><span class="section"> Spirit FAQ</span></dt>
 <dt><span class="section">Notes</span></dt>
 <dd><dl>
-<dt><span class="section">Portability</span></dt>
 <dt><span class="section"><a href="spirit/notes/porting_from_spirit_1_8_x.html">Porting from
       Spirit 1.8.x</a></span></dt>
 <dt><span class="section">Style Guide</span></dt>
-<dt><span class="section">Techniques</span></dt>
 </dl></dd>
-<dt><span class="section">Rationale</span></dt>
+<dt><span class="section"> Spirit Repository</span></dt>
 <dt><span class="section">Acknowledgments</span></dt>
 <dt><span class="section">References</span></dt>
 </dl>
 </div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.preface"></a>Preface</h2></div></div></div>
-<div class="blockquote"><blockquote class="blockquote">
-<p>
-        </p>
-<p>
-          <span class="emphasis"><em>“<span class="quote">Examples of designs that meet most of the criteria for
-          "goodness" (easy to understand, flexible, efficient) are a recursive-
-          descent parser, which is traditional procedural code. Another example is
-          the STL, which is a generic library of containers and algorithms depending
-          crucially on both traditional procedural code and on parametric polymorphism.</span>”</em></span>
-          <span class="bold"><b>--Bjarne Stroustrup</b></span>
-        </p>
-<p>
-      </p>
-</blockquote></div>
-<a name="spirit.preface.history"></a><h3>
-<a name="id388764"></a>
-      History
-    </h3>
-<a name="spirit.preface._emphasis_80s__emphasis_"></a><h3>
-<a name="id386336"></a>
-      80s
-    </h3>
-<p>
-      In the Mid 80s, Joel wrote his first calculator in Pascal. It has been an unforgettable
-      coding experience. He was amazed how a mutually recursive set of functions
-      can model a grammar specification. In time, the skills he acquired from that
-      academic experience became very practical. Periodically Joel was tasked to
-      do some parsing. For instance, whenever he needs to perform any form of I/O,
-      even in binary, he tries to approach the task somewhat formally by writing
-      a grammar using Pascal- like syntax diagrams and then write a corresponding
-      recursive-descent parser. This worked very well.
-    </p>
-<a name="spirit.preface._emphasis_90s__emphasis_"></a><h3>
-<a name="id386375"></a>
-      90s
-    </h3>
-<p>
-      The arrival of the Internet and the World Wide Web magnified this thousand-fold.
-      At one point Joel had to write an HTML parser for a Web browser project. He
-      got a recursive-descent HTML parser working based on the W3C formal specifications
-      easily. He was certainly glad that HTML had a formal grammar specification.
-      Because of the influence of the Internet, Joel then had to do more parsing.
-      RFC specifications were everywhere. SGML, HTML, XML, even email addresses and
-      those seemingly trivial URLs were all formally specified using small EBNF-
-      style grammar specifications. This made him wish for a tool similar to big-
-      time parser generators such as YACC and ANTLR, where a parser is built automatically
-      from a grammar specification. Yet, he wants it to be extremely small; small
-      enough to fit in my pocket, yet scalable.
-    </p>
-<p>
-      It must be able to practically parse simple grammars such as email addresses
-      to moderately complex grammars such as XML and perhaps some small to medium-sized
-      scripting languages. Scalability is a prime goal. You should be able to use
-      it for small tasks such as parsing command lines without incurring a heavy
-      payload, as you do when you are using YACC or PCCTS. Even now that it has evolved
-      and matured to become a multi-module library, true to its original intent,
-      Spirit can still be used for extreme micro-parsing tasks. You only pay for
-      features that you need. The power of Spirit comes from its modularity and extensibility.
-      Instead of giving you a sledgehammer, it gives you the right ingredients to
-      create a sledgehammer easily.
-    </p>
 <p>
-      The result was Spirit. Spirit was a personal project that was conceived when
-      Joel was doing R&D in Japan. Inspired by the GoF's composite and interpreter
-      patterns, he realized that he can model a recursive-descent parser with hierarchical-object
-      composition of primitives (terminals) and composites (productions). The original
-      version was implemented with run-time polymorphic classes. A parser is generated
-      at run time by feeding in production rule strings such as:
-    </p>
-<pre class="programlisting"><span class="string">"prod ::= {'A' | 'B'} 'C';"</span>
-</pre>
-<p>
-      A compile function compiled the parser, dynamically creating a hierarchy of
-      objects and linking semantic actions on the fly. A very early text can be found
-      here: pre-Spirit.
-    </p>
-<a name="spirit.preface._emphasis_2001_to_2006__emphasis_"></a><h3>
-<a name="id388110"></a>
-      <a href="index.html#spirit.preface._emphasis_2001_to_2006__emphasis_"><span class="emphasis"><em>2001
-      to 2006</em></span></a>
-    </h3>
-<p>
-      Version 1.0 to 1.8 was a complete rewrite of the original Spirit parser using
-      expression templates and static polymorphism, inspired by the works of Todd
-      Veldhuizen (<a href="http://ubiety.uwaterloo.ca/~tveldhui/papers/Expression-Templates/exprtmpl.html" target="_top">Expression
-      Templates</a>, C++ Report, June 1995). Initially, the static-Spirit version
-      was meant only to replace the core of the original dynamic-Spirit. Dynamic-spirit
-      needed a parser to implement itself anyway. The original employed a hand-coded
-      recursive-descent parser to parse the input grammar specification strings.
-      Incidentially it was the time, when Hartmut joined the Spirit development.
-    </p>
-<p>
-      After its initial "open-source" debut in May 2001, static-Spirit
-      became a success. At around November 2001, the Spirit website had an activity
-      percentile of 98%, making it the number one parser tool at Source Forge at
-      the time. Not bad for such a niche project such as a parser library. The "static"
-      portion of Spirit was forgotten and static-Spirit simply became Spirit. The
-      library soon evolved to acquire more dynamic features.
-    </p>
-<p>
-      Spirit was formally accepted into Boost
-      in October 2002. Boost is a peer-reviewed, open collaborative development effort
-      that is a collection of free Open Source C++ libraries covering a wide range
-      of domains. The Boost Libraries have become widely known as an industry standard
-      for design and implementation quality, robustness, and reusability.
-    </p>
-<a name="spirit.preface._emphasis_2007__emphasis_"></a><h3>
-<a name="id387263"></a>
-      2007
-    </h3>
-<p>
-      Over the years, especially after Spirit was accepted into Boost, Spirit has
-      served its purpose quite admirably. The focus of what we'll now call <span class="bold"><b><span class="emphasis"><em>Classic-Spirit</em></span></b></span> (versions prior
-      to 2.0) was on transduction parsing where the input string is merely translated
-      to an output string. A lot of parsers are of the transduction type. When the
-      time came to add attributes to the parser library, it was done rather in an
-      ad-hoc manner, with the goal being 100% backward compatible with classic Spirit.
-      Some parsers have attributes, some don't.
-    </p>
-<p>
-      Spirit V2 is another major rewrite. Spirit V2 grammars are fully attributed
-      (see <a href="http://en.wikipedia.org/wiki/Attribute_grammar" target="_top">Attribute
-      Grammar</a>). All parser components have attributes. To do this efficiently
-      and ellegantly, we had to use a couple of infrastructure libraries. Some of
-      which haven't been written yet at the time, some were quite new when Spirit
-      debuted, and some needed work. MPL
-      is an important infrastructure library, yet is not sufficient to implement
-      Spirit V2. Another library had to be written: Fusion.
-      Fusion sits between MPL and STL --between compile time and runtime -- mapping
-      types to values. Fusion is a direct descendant of both MPL and Boost.Tuples
-      (Fusion is now a full fledged Boost
-      library). Phoenix also
-      had to be beefed up to support Spirit V2. The result is Phoenix2.
-      Last but not least, Spirit V2 uses an <a href="http://ubiety.uwaterloo.ca/~tveldhui/papers/Expression-Templates/exprtmpl.html" target="_top">Expression
-      Templates</a> library called -Boost.Proto-.
-    </p>
-<a name="spirit.preface.new_ideas__spirit_v2"></a><h3>
-<a name="id387382"></a>
-      New Ideas: Spirit V2
-    </h3>
-<p>
-      Just before the development of Spirit V2 began, Hartmut came across the StringTemplate library which is
-      a part of the ANTLR parser framework. It is a Java template engine (with ports
-      for C# and Python) for generating source code, web pages, emails, or any other
-      formatted text output. With it, he got the the idea of using a formal notation
-      (a grammar) to describe the expected structure of an input character sequence.
-      The same grammar may be used to formalize the structure of a corresponding
-      output character sequence. This is possible because parsing, most of the time,
-      is implemented by comparing the input with the patterns defined by the grammar.
-      If we use the same patterns to format a matching output, the generated sequence
-      will follow the rules of the grammar as well.
-    </p>
-<p>
-      This insight lead to the implementation of a grammar driven output generation
-      library compatibile with the Spirit parser library. As it turned out, parsing
-      and generation are tightly connected and have very similar concepts. The duality
-      of these two sides of the same medal is ubiquitous, which allowed us to build
-      the parser library <span class="emphasis"><em>Spirit.Qi</em></span> and the generator library
-      <span class="emphasis"><em>Spirit.Karma</em></span> using the same component infastructure.
-    </p>
-<p>
-      The idea of creating a lexer library well integrated with the Spirit parsers
-      is not new. This has been discussed almost for the whole time of the existence
-      of Classic-Spirit (pre V2) now. Several attempts to integrate existing lexer
-      libraries and frameworks with Spirit have been made and served as a proof of
-      concept and usability (for example see Wave:
-      The Boost C/C++ Preprocessor Library, and SLex:
-      a fully dynamic C++ lexer implemented with Spirit). Based on these experiences
-      we added <span class="emphasis"><em>Spirit.Lex</em></span>: a fully integrated lexer library
-      to the mix, allowing to take advantage of the power of regular expressions
-      for token matching, removing pressure from the parser components, simplifying
-      parser grammars. Again, Spirit's modular structure allowed us to reuse the
-      same underlying component library as for the parser and generator libraries.
-    </p>
-<a name="spirit.preface.how_to_use_this_manual"></a><h3>
-<a name="id387485"></a>
-      How to use this manual
-    </h3>
-<p>
-      Each major section (there are two: <a href="spirit/qi_and_karma.html" title="Qi and Karma">Qi and
-      Karma</a>, and Lex) is roughly divided
-      into 3 parts:
-    </p>
-<div class="orderedlist"><ol type="1">
-<li>
-        Tutorials: A step by step guide with heavily annotated code. These are meant
-        to get the user acquainted with the library as quickly as possible. The objective
-        is to build the confidence of the user in using the library using abundant
-        examples and detailed instructions. Examples speak volumes.
-      </li>
-<li>
-        Abstracts: A high level summary of key topics. The objective is to give the
-        user a high level view of the library, the key concepts, background and theories.
-      </li>
-<li>
-        Reference: Detailed formal technical reference. We start with a quick reference
-        -- an easy to use table that maps into the reference proper. The reference
-        proper starts with C++ Concepts
-        followed by models of the concepts.
-      </li>
-</ol></div>
-<p>
-      Some icons are used to mark certain topics indicative of their relevance. These
-      icons precede some text to indicate:
-    </p>
-<div class="table">
-<a name="id387571"></a><p class="title"><b>Table 1. Icons</b></p>
-<table class="table" summary="Icons">
-<colgroup>
-<col>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
-          <p>
-            Icon
-          </p>
-          </th>
-<th>
-          <p>
-            Name
-          </p>
-          </th>
-<th>
-          <p>
-            Meaning
-          </p>
-          </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
-          <p>
-            <span class="inlinemediaobject"><img src="images/note.png" alt="note"></span>
-          </p>
-          </td>
-<td>
-          <p>
-            Note
-          </p>
-          </td>
-<td>
-          <p>
-            Generally useful information (an aside that doesn't fit in the flow of
-            the text)
-          </p>
-          </td>
-</tr>
-<tr>
-<td>
-          <p>
-            <span class="inlinemediaobject"><img src="images/tip.png" alt="tip"></span>
-          </p>
-          </td>
-<td>
-          <p>
-            Tip
-          </p>
-          </td>
-<td>
-          <p>
-            Suggestion on how to do something (especially something that not be obvious)
-          </p>
-          </td>
-</tr>
-<tr>
-<td>
-          <p>
-            <span class="inlinemediaobject"><img src="images/important.png" alt="important"></span>
-          </p>
-          </td>
-<td>
-          <p>
-            Important
-          </p>
-          </td>
-<td>
-          <p>
-            Important note on something to take particular notice of
-          </p>
-          </td>
-</tr>
-<tr>
-<td>
-          <p>
-            <span class="inlinemediaobject"><img src="images/caution.png" alt="caution"></span>
-          </p>
-          </td>
-<td>
-          <p>
-            Caution
-          </p>
-          </td>
-<td>
-          <p>
-            Take special care with this - it may not be what you expect and may cause
-            bad results
-          </p>
-          </td>
-</tr>
-<tr>
-<td>
-          <p>
-            <span class="inlinemediaobject"><img src="images/alert.png" alt="alert"></span>
-          </p>
-          </td>
-<td>
-          <p>
-            Danger
-          </p>
-          </td>
-<td>
-          <p>
-            This is likely to cause serious trouble if ignored
-          </p>
-          </td>
-</tr>
-</tbody>
-</table>
-</div>
-<p>
-      This documentation is automatically generated by Boost QuickBook documentation
-      tool. QuickBook can be found in the <a href="http://www.boost.org/tools/index.html" target="_top">Boost
-      Tools</a>.
-    </p>
-<a name="spirit.preface.support"></a><h3>
-<a name="id386631"></a>
-      Support
-    </h3>
-<p>
-      Please direct all questions to Spirit's mailing list. You can subscribe to
-      the <a href="http://www.nabble.com/The-Spirit-Parser-Library-f3430.html" target="_top">Spirit
-      General List</a>. The mailing list has a searchable archive. A search link
-      to this archive is provided in Spirit's
-      home page. You may also read and post messages to the mailing list through
-      <a href="news://news.gmane.org/gmane.comp.spirit.general" target="_top">Spirit General
-      NNTP news portal</a> (thanks to Gmane).
-      The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general.
-    </p>
-</div>
+    This is the documentation of the newest version of Spirit
+    (currently, V2.1). If you're looking for the documentation of Spirit's previous
+    version (formerly Spirit V1.8), see Spirit.Classic.
+  </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: December 23, 2008 at 09:37:55 GMT</small></p></td>
+<td align="left"><p><small>Last revised: September 14, 2009 at 14:47:16 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>
-<div class="spirit-nav"><a accesskey="n" href="spirit/what_s_new.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
+<div class="spirit-nav"><a accesskey="n" href="spirit/preface.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
 </body>
 </html>
Added: branches/release/libs/spirit/doc/html/spirit/abstracts.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Abstracts</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="structure/include.html" title="Include">
+<link rel="next" href="abstracts/syntax_diagram.html" title="Syntax Diagram">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="structure/include.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="abstracts/syntax_diagram.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Abstracts">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.abstracts"></a><a class="link" href="abstracts.html" title="Abstracts">Abstracts</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Syntax Diagram</span></dt>
+<dt><span class="section"><a href="abstracts/parsing_expression_grammar.html">Parsing
+      Expression Grammar</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="structure/include.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="abstracts/syntax_diagram.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,231 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parsing Expression Grammar</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="syntax_diagram.html" title="Syntax Diagram">
+<link rel="next" href="../qi.html" title="Qi - Writing Parsers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="syntax_diagram.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../qi.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Parsing Expression Grammar">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.abstracts.parsing_expression_grammar"></a><a class="link" href="parsing_expression_grammar.html" title="Parsing Expression Grammar">Parsing
+      Expression Grammar</a>
+</h3></div></div></div>
+<p>
+        Parsing Expression Grammars (PEG)
+        <sup>[<a name="id595910" href="#ftn.id595910" class="footnote">5</a>]</sup>
+        are a derivative of Extended Backus-Naur Form (EBNF)
+        <sup>[<a name="id595922" href="#ftn.id595922" class="footnote">6</a>]</sup>
+        with a different interpretation, designed to represent a recursive descent
+        parser. A PEG can be directly represented as a recursive-descent parser.
+      </p>
+<p>
+        Like EBNF, PEG is a formal grammar for describing a formal language in terms
+        of a set of rules used to recognize strings of this language. Unlike EBNF,
+        PEGs have an exact interpretation. There is only one valid parse tree (see
+        Abstract Syntax Tree) for each PEG grammar.
+      </p>
+<a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h5>
+<a name="id595942"></a>
+        <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
+      </h5>
+<p>
+        Sequences are represented by juxtaposition like in EBNF:
+      </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="identifier">b</span>
+</pre>
+<p>
+        The PEG expression above states that, in order for this to succeed, <code class="computeroutput"><span class="identifier">a</span></code> must follow <code class="computeroutput"><span class="identifier">b</span></code>.
+        Here's the syntax diagram:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/sequence.png" alt="sequence"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Here's a trivial example:
+      </p>
+<pre class="programlisting"><span class="char">'x'</span> <span class="identifier">digit</span>
+</pre>
+<p>
+        which means the character <code class="computeroutput"><span class="identifier">x</span></code>
+        must be followed by a digit.
+      </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          In Spirit.Qi, we use the <code class="computeroutput"><span class="special">>></span></code>
+          for sequences since C++ does not allow juxtaposition
+        </p></td></tr>
+</table></div>
+<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
+<a name="id596060"></a>
+        <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
+      </h5>
+<p>
+        Alternatives are represented in PEG using the slash:
+      </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">/</span> <span class="identifier">b</span>
+</pre>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          In Spirit.Qi, we use the <code class="computeroutput"><span class="special">|</span></code>
+          for alternatives just as in EBNF
+        </p></td></tr>
+</table></div>
+<p>
+        Alternatives allow for choices. The expression above reads: try to match
+        <code class="computeroutput"><span class="identifier">a</span></code>. If <code class="computeroutput"><span class="identifier">a</span></code>
+        succeeds, success, if not try to match <code class="computeroutput"><span class="identifier">b</span></code>.
+        This is a bit of a deviation from the usual EBNF interpretation where you
+        simply match <code class="computeroutput"><span class="identifier">a</span></code> <span class="bold"><strong>or</strong></span> <code class="computeroutput"><span class="identifier">b</span></code>.
+        Here's the syntax diagram:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/alternative.png" alt="alternative"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        PEGs allow for ambiguity in the alternatives. In the expression above, both
+        <code class="computeroutput"><span class="identifier">a</span></code> or <code class="computeroutput"><span class="identifier">b</span></code>
+        can both match an input string. However, only the first matching alternative
+        is valid. As noted, there can only be one valid parse tree ($$$ explain more
+        about this $$$).
+      </p>
+<a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
+<a name="id596199"></a>
+        <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
+      </h5>
+<p>
+        Again, like EBNF, PEG uses the regular-expression Kleene star and the plus
+        loops:
+      </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">*</span>
+<span class="identifier">a</span><span class="special">+</span>
+</pre>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          Spirit.Qi uses the prefix star and plus since there is no postfix star
+          or plus in C++.
+        </p></td></tr>
+</table></div>
+<p>
+        Here are the syntax diagrams:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/kleene.png" alt="kleene"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/plus.png" alt="plus"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        The first, called the Kleene star, matches zero or more of its subject <code class="computeroutput"><span class="identifier">a</span></code>. The second, plus, matches one ore more
+        of its subject <code class="computeroutput"><span class="identifier">a</span></code>.
+      </p>
+<p>
+        Unlike EBNF, PEGs have greedy loops. It will match as much as it can until
+        its subject fails to match without regard to what follows. The following
+        is a classic example of a fairly common EBNF/reg-ex expression failing to
+        match in PEG:
+      </p>
+<pre class="programlisting"><span class="identifier">alnum</span><span class="special">*</span> <span class="identifier">digit</span>
+</pre>
+<p>
+        In PEG, alnum will eat as much alpha-numeric characters as it can leaving
+        nothing more left behind. Thus, the trailing digit will get nothing. Loops
+        are simply implemented in recursive descent code as for/while loops making
+        them extremely efficient. That is a definite advantage. On the other hand,
+        those who are familiar with EBNF and regex behavior might find the behavior
+        a major gotcha. PEG provides a couple of other mechanisms to circumvent this.
+        We will see more of these other mechanisms shortly.
+      </p>
+<a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h5>
+<a name="id596886"></a>
+        <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
+      </h5>
+<p>
+        In certain cases, you may want to restrict a certain expression. You can
+        think of a PEG expression as a match for a potentially infinite set of strings.
+        The difference operator allows you to restrict this set:
+      </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span>
+</pre>
+<p>
+        The expression reads: match <code class="computeroutput"><span class="identifier">a</span></code>
+        but not <code class="computeroutput"><span class="identifier">b</span></code>.
+      </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id595910" href="#id595910" class="para">5</a>] </sup>
+            Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
+            Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id595922" href="#id595922" class="para">6</a>] </sup>
+            Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
+          </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="syntax_diagram.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../qi.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Syntax Diagram</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="../abstracts.html" title="Abstracts">
+<link rel="next" href="parsing_expression_grammar.html" title="Parsing Expression Grammar">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../abstracts.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="parsing_expression_grammar.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Syntax Diagram">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.abstracts.syntax_diagram"></a><a class="link" href="syntax_diagram.html" title="Syntax Diagram">Syntax Diagram</a>
+</h3></div></div></div>
+<p>
+        In the next section, we will deal with Parsing Expression Grammars (PEG)
+        <sup>[<a name="id595483" href="#ftn.id595483" class="footnote">2</a>]</sup>
+        , a variant of Extended Backus-Naur Form (EBNF)
+        <sup>[<a name="id595495" href="#ftn.id595495" class="footnote">3</a>]</sup>
+        with a different interpretation. It is easier to understand PEG using Syntax
+        Diagrams. Syntax diagrams represent a grammar graphically. It was used extensibly
+        by Niklaus Wirth
+        <sup>[<a name="id595507" href="#ftn.id595507" class="footnote">4</a>]</sup>
+        in the "Pascal User Manual". Syntax Diagrams are easily understandable
+        with programmers due to its similarity to flow charts. The isomorphism of
+        the diagrams and functions make it ideal for representing Recursive Descent
+        parsers which are essentially mutually recursive functions.
+      </p>
+<a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
+<a name="id595519"></a>
+        <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
+      </h5>
+<p>
+        All diagrams have one entry and exit point. Arrows connect all possible paths
+        through the grammar from the entry point to the exit point.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/start_stop.png" alt="start_stop"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Terminals are represented by round boxes. Terminals are atomic and usually
+        represent plain characters, strings or tokens.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/terminal.png" alt="terminal"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Non-terminals are represented by boxes. Diagrams are modularized using named
+        non-terminals. A complex diagram can be broken down into a set of non-terminals.
+        Non-terminals also allow recursion (i.e. a non-terminal can call itself).
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/non-terminal.png" alt="non-terminal"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<a name="spirit.abstracts.syntax_diagram.constructs"></a><h5>
+<a name="id595618"></a>
+        <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
+      </h5>
+<p>
+        The most basic composition is the Sequence. B follows A:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/sequence.png" alt="sequence"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        The ordered choice, henceforth we will call <span class="emphasis"><em>alternatives</em></span>.
+        In PEG, ordered choice and alternatives are not quite the same. PEG allows
+        ambiguity of choice where one or more branches can succeed. In PEG, in case
+        of ambiguity, the first one always wins.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/alternative.png" alt="alternative"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        The optional (zero-or-one):
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/optional.png" alt="optional"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Now, the loops. We have the zero-or-more and one-or-more:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/kleene.png" alt="kleene"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/plus.png" alt="plus"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Take note that, as in PEG, these loops behave greedily. If there is another
+        'A' just before the end-point, it will always fail because the preceding
+        loop has already exhausted all 'A's and there is nothing more left. This
+        is a crucial difference between PEG and general Context Free Grammars (CFGs).
+        This behavior is quite obvious with syntax diagrams as they resemble flow-charts.
+      </p>
+<a name="spirit.abstracts.syntax_diagram.predicates"></a><h5>
+<a name="id595779"></a>
+        <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
+      </h5>
+<p>
+        Now, the following are Syntax Diagram versions of PEG predicates. These are
+        not traditionally found in Syntax Diagrams. These are special extensions
+        we invented to closely follow PEGs.
+      </p>
+<p>
+        First, we introduce a new element, the Predicate:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/predicate.png" alt="predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        This is similar to the conditionals in flow charts where the 'No' branch
+        is absent and always signals a failed parse.
+      </p>
+<p>
+        We have two versions of the predicate, the <span class="emphasis"><em>And-Predicate</em></span>
+        and the <span class="emphasis"><em>Not-Predicate</em></span>:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/and_predicate.png" alt="and_predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+            <span class="inlinemediaobject"><img src="../../../../images/not_predicate.png" alt="not_predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        The <span class="emphasis"><em>And-Predicate</em></span> tries the predicate, P, and succeeds
+        if P succeeds, or otherwise fail. The opposite is true with the <span class="emphasis"><em>Not-Predicate</em></span>.
+        It tries the predicate, P, and fails if P succeeds, or otherwise succeeds.
+        Both versions do a look-ahead but do not consume any input regardless if
+        P succeeds or not.
+      </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id595483" href="#id595483" class="para">2</a>] </sup>
+            Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
+            Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id595495" href="#id595495" class="para">3</a>] </sup>
+            Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id595507" href="#id595507" class="para">4</a>] </sup>
+            Niklaus Wirth: The Programming Language Pascal. (July 1973)
+          </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../abstracts.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="parsing_expression_grammar.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/acknowledgments.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/acknowledgments.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Acknowledgments</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="repository.html" title="Spirit Repository">
+<link rel="next" href="references.html" title="References">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repository.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Acknowledgments">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.acknowledgments"></a><a class="link" href="acknowledgments.html" title="Acknowledgments">Acknowledgments</a>
+</h2></div></div></div>
+<p>
+      This version of Spirit is a complete rewrite of the <span class="emphasis"><em>classic</em></span>
+      Spirit many people have been contributing to (see below). But there are a couple
+      of people who already managed to help significantly during this rewrite. We
+      would like to express our special acknowledgement to:
+    </p>
+<p>
+      <span class="bold"><strong>Eric Niebler</strong></span> for writing Boost.Proto, without
+      which this rewrite wouldn't have been possible, and helping with examples,
+      advices, and suggestions on how to use Boost.Proto in the best possible way.
+    </p>
+<p>
+      <span class="bold"><strong>Ben Hanson</strong></span> for providing us with an early
+      version of his Lexertl library, which is proposed to be included into Boost
+      (as Boost.Lexer), but at the time of this writing the Boost review for this
+      library is still pending.
+    </p>
+<p>
+      <span class="bold"><strong>FIXME</strong></span>: Add more people
+    </p>
+<a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h4>
+<a name="id900895"></a>
+      <a class="link" href="acknowledgments.html#spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation">Acknowledgements
+      from the Spirit V1 <span class="emphasis"><em>classic</em></span> Documentation</a>
+    </h4>
+<p>
+      Special thanks for working on Spirit <span class="emphasis"><em>classic</em></span> to:
+    </p>
+<p>
+      <span class="bold"><strong>Dan Nuffer</strong></span> for his work on lexers, parse trees,
+      ASTs, XML parsers, the multi-pass iterator as well as administering Spirit's
+      site, editing, maintaining the CVS and doing the releases plus a zillion of
+      other chores that were almost taken for granted.
+    </p>
+<p>
+      <span class="bold"><strong>Hartmut Kaiser</strong></span> for his work on the C parser,
+      the work on the C/C++ preprocessor, utility parsers, the original port to Intel
+      5.0, various work on Phoenix, porting to v1.5, the meta-parsers, the grouping-parsers,
+      extensive testing and painstaking attention to details.
+    </p>
+<p>
+      <span class="bold"><strong>Martin Wille</strong></span> who improved grammar multi thread
+      safety, contributed the eol_p parser, the dynamic parsers, documentation and
+      for taking an active role in almost every aspect from brainstorming and design
+      to coding. And, as always, helps keep the regression tests for g++ on Linux
+      as green as ever :-).
+    </p>
+<p>
+      <span class="bold"><strong>Martijn W. Van Der Lee</strong></span> our Web site administrator
+      and for contributing the RFC821 parser.
+    </p>
+<p>
+      <span class="bold"><strong>Giovanni Bajo</strong></span> for last minute tweaks of Spirit
+      1.8.0 for CodeWarrior 8.3. Actually, I'm ashamed Giovanni was not in this list
+      already. He's done a lot since Spirit 1.5, the first Boost.Spirit release.
+      He's instrumental in the porting of the Spirit iterators stuff to the new Boost
+      Iterators Library (version 2). He also did various bug fixes and wrote some
+      tests here and there.
+    </p>
+<p>
+      <span class="bold"><strong>Juan Carlos Arevalo-Baeza (JCAB)*</strong></span> for his
+      work on the C++ parser, the position iterator, ports to v1.5 and keeping the
+      mailing list discussions alive and kicking.
+    </p>
+<p>
+      <span class="bold"><strong>Vaclav Vesely</strong></span>, lots of stuff, the no_actions
+      directive, various patches fixes, the distinct parsers, the lazy parser, some
+      phoenix tweaks and add-ons (e.g. new_). Also, *Stefan Slapeta] and wife for
+      editing Vaclav's distinct parser doc.
+    </p>
+<p>
+      <span class="bold"><strong>Raghavendra Satish</strong></span> for doing the original
+      v1.3 port to VC++ and his work on Phoenix.
+    </p>
+<p>
+      <span class="bold"><strong>Noah Stein</strong></span> for following up and helping Ragav
+      on the VC++ ports.
+    </p>
+<p>
+      <span class="bold"><strong>Hakki Dogusan</strong></span>, for his original v1.0 Pascal
+      parser.
+    </p>
+<p>
+      <span class="bold"><strong>John (EBo) David</strong></span> for his work on the VM and
+      watching over my shoulder as I code giving the impression of distance eXtreme
+      programming.
+    </p>
+<p>
+      <span class="bold"><strong>Chris Uzdavinis</strong></span> for feeding in comments and
+      valuable suggestions as well as editing the documentation.
+    </p>
+<p>
+      <span class="bold"><strong>Carsten Stoll</strong></span>, for his work on dynamic parsers.
+    </p>
+<p>
+      <span class="bold"><strong>Andy Elvey</strong></span> and his conifer parser.
+    </p>
+<p>
+      <span class="bold"><strong>Bruce Florman</strong></span>, who did the original v1.0 port
+      to VC++.
+    </p>
+<p>
+      <span class="bold"><strong>Jeff Westfahl</strong></span> for porting the loop parsers
+      to v1.5 and contributing the file iterator.
+    </p>
+<p>
+      <span class="bold"><strong>Peter Simons</strong></span> for the RFC date parser example
+      and tutorial plus helping out with some nitty gritty details.
+    </p>
+<p>
+      <span class="bold"><strong>Markus Schöpflin</strong></span> for suggesting the end_p parser
+      and lots of other nifty things and his active presence in the mailing list.
+    </p>
+<p>
+      <span class="bold"><strong>Doug Gregor</strong></span> for mentoring and his ability
+      to see things that others don't.
+    </p>
+<p>
+      <span class="bold"><strong>David Abrahams</strong></span> for giving Joel a job that
+      allows him to still work on Spirit, plus countless advice and help on C++ and
+      specifically template metaprogramming.
+    </p>
+<p>
+      <span class="bold"><strong>Aleksey Gurtovoy</strong></span> for his MPL library from
+      which we stole many metaprogramming tricks especially for less conforming compilers
+      such as Borland and VC6/7.
+    </p>
+<p>
+      <span class="bold"><strong>Gustavo Guerra</strong></span> for his last minute review
+      of Spirit and constant feedback, plus patches here and there (e.g. proposing
+      the new dot behavior of the real numerics parsers).
+    </p>
+<p>
+      <span class="bold"><strong>Nicola Musatti</strong></span>, <span class="bold"><strong>Paul
+      Snively</strong></span>, <span class="bold"><strong>Alisdair Meredith</strong></span> and
+      <span class="bold"><strong>Hugo Duncan</strong></span> for testing and sending in various
+      patches.
+    </p>
+<p>
+      <span class="bold"><strong>Steve Rowe</strong></span> for his splendid work on the TSTs
+      that will soon be taken into Spirit.
+    </p>
+<p>
+      <span class="bold"><strong>Jonathan de Halleux</strong></span> for his work on actors.
+    </p>
+<p>
+      <span class="bold"><strong>Angus Leeming</strong></span> for last minute editing work
+      on the 1.8.0 release documentation, his work on Phoenix and his active presence
+      in the Spirit mailing list.
+    </p>
+<p>
+      <span class="bold"><strong>Joao Abecasis</strong></span> for his active presence in the
+      Spirit mailing list, providing user support, participating in the discussions
+      and so on.
+    </p>
+<p>
+      <span class="bold"><strong>Guillaume Melquiond</strong></span> for a last minute patch
+      to multi_pass for 1.8.1.
+    </p>
+<p>
+      <span class="bold"><strong>Peder Holt</strong></span> for his porting work on Phoenix,
+      Fusion and Spirit to VC6.
+    </p>
+<p>
+      To Joels wife Mariel who did the graphics in this document.
+    </p>
+<p>
+      My, there's a lot in this list! And it's a continuing list. We add people to
+      this list everytime. We hope we did not forget anyone. If we missed someone
+      you know who has helped in any way, please inform us.
+    </p>
+<p>
+      Special thanks also to people who gave feedback and valuable comments, particularly
+      members of Boost and Spirit mailing lists. This includes all those who participated
+      in the review:
+    </p>
+<p>
+      <span class="bold"><strong>John Maddock</strong></span>, our review manager, <span class="bold"><strong>Aleksey Gurtovoy</strong></span>, <span class="bold"><strong>Andre Hentz</strong></span>,
+      <span class="bold"><strong>Beman Dawes</strong></span>, <span class="bold"><strong>Carl Daniel</strong></span>,
+      <span class="bold"><strong>Christopher Currie</strong></span>, <span class="bold"><strong>Dan
+      Gohman</strong></span>, <span class="bold"><strong>Dan Nuffer</strong></span>, <span class="bold"><strong>Daryle
+      Walker</strong></span>, <span class="bold"><strong>David Abrahams</strong></span>, <span class="bold"><strong>David B. Held</strong></span>, <span class="bold"><strong>Dirk Gerrits</strong></span>,
+      <span class="bold"><strong>Douglas Gregor</strong></span>, <span class="bold"><strong>Hartmut
+      Kaiser</strong></span>, <span class="bold"><strong>Iain K.Hanson</strong></span>, <span class="bold"><strong>Juan Carlos Arevalo-Baeza</strong></span>, <span class="bold"><strong>Larry
+      Evans</strong></span>, <span class="bold"><strong>Martin Wille</strong></span>, <span class="bold"><strong>Mattias Flodin</strong></span>, <span class="bold"><strong>Noah Stein</strong></span>,
+      <span class="bold"><strong>Nuno Lucas</strong></span>, <span class="bold"><strong>Peter Dimov</strong></span>,
+      <span class="bold"><strong>Peter Simons</strong></span>, <span class="bold"><strong>Petr Kocmid</strong></span>,
+      <span class="bold"><strong>Ross Smith</strong></span>, <span class="bold"><strong>Scott Kirkwood</strong></span>,
+      <span class="bold"><strong>Steve Cleary</strong></span>, <span class="bold"><strong>Thorsten
+      Ottosen</strong></span>, <span class="bold"><strong>Tom Wenisch</strong></span>, <span class="bold"><strong>Vladimir Prus</strong></span>
+    </p>
+<p>
+      Finally thanks to SourceForge for hosting the Spirit project and Boost: a C++
+      community comprised of extremely talented library authors who participate in
+      the discussion and peer review of well crafted C++ libraries.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repository.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="references.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/faq.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/faq.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,256 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Spirit FAQ</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="support/multi_pass.html" title="The multi pass iterator">
+<link rel="next" href="notes.html" title="Notes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="support/multi_pass.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="notes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Spirit FAQ">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.faq"></a><a class="link" href="faq.html" title="Spirit FAQ"> Spirit FAQ</a>
+</h2></div></div></div>
+<a name="spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_"></a><h4>
+<a name="id889387"></a>
+      <a class="link" href="faq.html#spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_">I'm
+      getting multiple symbol definition errors while using Visual C++. Anything
+      I could do about that?</a>
+    </h4>
+<p>
+      Do you see strange multiple symbol definition linker errors mentioning <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">failed</span></code>
+      and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span></code>?
+      Then this FAQ entry might be for you.
+    </p>
+<p>
+      Boost.Mpl implements
+      a macro <code class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></code> which essentially is a more powerfull version
+      of static_assert. Unfortunately under certain circumstances using this macro
+      may lead to the aformentioned linker errors.
+    </p>
+<p>
+      Spirit allows you to define
+      a preprocessor constant disabling the usage of <code class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></code>, while switching to <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">()</span></code> instead. For that you need define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1
+      (either by adding
+    </p>
+<pre class="programlisting"><span class="special">-</span><span class="identifier">DBOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG</span><span class="special">=</span><span class="number">1</span>
+</pre>
+<p>
+      on the compiler command line or by inserting a
+    </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG</span> <span class="number">1</span> 
+</pre>
+<p>
+      into your code before any spirit headers get included).
+    </p>
+<p>
+      Using this trick has no adverse effects on any of the functionality of Spirit. The only change you might
+      see while using this workaround are less verbose error messages generated from
+      static_assert.
+    </p>
+<a name="spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_"></a><h4>
+<a name="id890241"></a>
+      <a class="link" href="faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">I'm
+      very confused about the header hell in my boost/spirit directory. What's all
+      this about?</a>
+    </h4>
+<p>
+      The boost/spirit directory currently holds two versions of the Spirit library:
+      Spirit.Classic
+      (former V1.8.x) and SpiritV2. Both are completely independent and usually not
+      used at the same time. Do not mix these two in the same grammar.
+    </p>
+<p>
+      Spirit.Classic
+      evolved over years in a fairly complex directory structure:
+    </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">actor</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">attribute</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">core</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">debug</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">dynamic</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">error_handling</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">iterator</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">meta</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">symbols</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">tree</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">utility</span>
+</pre>
+<p>
+      While introducing Spirit V2 we restructured the directory structure in order
+      to accommodate two versions at the same time. All of Spirit.Classic
+      now lives in the directory
+    </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">classic</span> 
+</pre>
+<p>
+      where the directories above contain forwarding headers to the new location
+      allowing to maintain application compatibility. The forwarding headers issue
+      a warning (starting with Boost V1.38) telling the user to change their include
+      paths. Please expect the above directories/forwarding headers to go away soon.
+    </p>
+<p>
+      This explains the need for the directory
+    </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span>
+</pre>
+<p>
+      which contains forwarding headers as well. But this time the headers won't
+      go away. We encourage application writers to use only the includes contained
+      in this directory. This allows us to restructure the directories underneath
+      if needed without worrying application compatibility. Please use those files
+      in your application only. If it turns out that some forwarding file is missing,
+      please report this as a bug.
+    </p>
+<p>
+      Spirit V2 is not about parsing only anymore (as Spirit.Classic).
+      It now consists out of 3 parts (sub-libraries): <span class="emphasis"><em>Spirit.Qi</em></span>,
+      <span class="emphasis"><em>Spirit.Karma</em></span>, and <span class="emphasis"><em>Spirit.Lex</em></span>. The
+      header files for those live in
+    </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">qi</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">karma</span>
+<span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">lex</span>
+</pre>
+<p>
+      and have forwarding headers in
+    </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span>
+</pre>
+<p>
+      <span class="emphasis"><em>Spirit.Qi</em></span> is the direct successor to Spirit.Classic
+      as it implements a DSEL (domain specific embedded language) allowing to write
+      parsers using the syntax of C++ itself (parsers in the sense turning a sequence
+      of bytes into an internal data structure). It is not compatible with Spirit.Classic,
+      the main concepts are similar, though.
+    </p>
+<p>
+      <span class="emphasis"><em>Spirit.Karma</em></span> is the counterpart to <span class="emphasis"><em>Spirit.Qi</em></span>.
+      It implements a similar DSEL but for writing generators (i.e. the things turning
+      internal data structures into a sequence of bytes, most of the time - strings).
+      <span class="emphasis"><em>Spirit.Karma</em></span> is the Yang to <span class="emphasis"><em>Spirit.Qi</em></span>'s
+      Yin, it's almost like a mirrored picture.
+    </p>
+<p>
+      <span class="emphasis"><em>Spirit.Lex</em></span> is (as the name implies) a library allowing
+      to write lexical analyzers. These are either usable standalone or can be used
+      as a frontend for <span class="emphasis"><em>Spirit.Qi</em></span> parsers. If you know flex
+      you shouldn't have problems understanding <span class="emphasis"><em>Spirit.Lex</em></span>.
+      This library actually doesn't implement the lexer itself. All it does is to
+      provide an interface to pre-existing lexical analyzers. Currently it's using
+      Ben Hansons excellent Lexertl
+      library (proposed for a Boost review, BTW) as its underlying workhorse.
+    </p>
+<p>
+      Again, don't use any of the header files underneath the boost/spirit/home directory
+      directly, always include files from the boost/spirit/include directory.
+    </p>
+<p>
+      The last bit missing is Boost.Phoenix
+      (which currently still lives under the Spirit umbrella, but already has been
+      accepted as a Boost library, so it will move away). Boost.Phoenix
+      is a library allowing to write functional style C++, which is interesting on
+      itself, but as it initially has been developed for Spirit, it is nicely integrated
+      and very useful when it comes to writing semantic actions. I think using the
+      boost/spirit/include/phoenix_... headers will be safe in the future as well,
+      as we will probably redirect to the Boost.Phoenix headers as soon as these
+      are available.
+    </p>
+<a name="spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_"></a><h4>
+<a name="id890765"></a>
+      <a class="link" href="faq.html#spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_">Why
+      doesn't my symbol table work in a <code class="computeroutput"><span class="identifier">no_case</span></code>
+      directive?</a>
+    </h4>
+<p>
+      In order to perform case-insensitive parsing (using <a class="link" href="qi/reference/directive/no_case.html" title="Inhibiting Case Sensitivity (no_case[])"><code class="computeroutput"><span class="identifier">no_case</span></code></a>) with a symbol table (i.e.
+      use a <a class="link" href="qi/reference/string/symbols.html" title="Symbols (symbols)"><code class="computeroutput"><span class="identifier">symbols</span><span class="special"><</span><span class="identifier">Ch</span><span class="special">,</span>
+      <span class="identifier">T</span><span class="special">></span></code></a>
+      parser in a <code class="computeroutput"><span class="identifier">no_case</span></code> directive),
+      that symbol table needs to be filled with all-lowercase contents. Entries containing
+      one or more uppercase characters will not match any input.
+    </p>
+<a name="spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_"></a><h4>
+<a name="id890836"></a>
+      <a class="link" href="faq.html#spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_">I'm
+      getting a compilation error mentioning <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span></code>
+      and/or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function4</span></code>. What does this mean?</a>
+    </h4>
+<p>
+      If you are using Visual C++ and have an error like:
+    </p>
+<pre class="programlisting">error C2664: 'bool boost::function4<R,T0,T1,T2,T3>::operator ()(T0,T1,T2,T3) const' :
+    cannot convert parameter 4 from '...' to '...'
+</pre>
+<p>
+      or you are using GCC and have an error like:
+    </p>
+<pre class="programlisting">error: no match for call to '(const boost::function<bool ()(...)>) (...)'
+note: candidates are: ... boost::function4<R,T1,T2,T3,T4>::operator()(T0,T1,T2,T3) const [with ...]
+</pre>
+<p>
+      then this FAQ entry may help you.
+    </p>
+<p>
+      The definition of a Rule or Grammar may contain a skip parser type. If it does,
+      it means that non-terminal can only be used with a skip parser of a compatible
+      type. The error above arises when this is not the case, i.e.:
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+        a non-terminal defined with a skip parser type is used without a skip parser
+        (for example, a rule with a skip parser type is used inside a <code class="computeroutput"><span class="identifier">lexeme</span></code> directive, or a grammar with a skip
+        parser type is used in <code class="computeroutput"><span class="identifier">parse</span></code>
+        instead of <code class="computeroutput"><span class="identifier">phrase_parse</span></code>),
+      </li>
+<li class="listitem">
+        or a non-terminal is used with a skip parser of an incompatible type (for
+        example, a rule defined with one skip parser type calls a second rule defined
+        with another, incompatible skip parser type).
+      </li>
+</ul></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+        The same applies to <span class="emphasis"><em>Spirit.Karma</em></span>, replacing 'skip parser'
+        and <code class="computeroutput"><span class="identifier">lexeme</span></code> by 'delimit generator'
+        and <code class="computeroutput"><span class="identifier">verbatim</span></code>. Similarily,
+        corresponding error messages in <span class="emphasis"><em>Spirit.Karma</em></span> reference
+        <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function3</span></code> and the 3rd parameter (instead
+        of the 4th).
+      </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="support/multi_pass.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="notes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/introduction.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/introduction.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,473 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="what_s_new.html" title="What's New">
+<link rel="next" href="structure.html" title="Structure">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="what_s_new.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="structure.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Introduction">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
+</h2></div></div></div>
+<p>
+      Boost Spirit is an object-oriented, recursive-descent parser and output generation
+      library for C++. It allows you to write grammars and format descriptions using
+      a format similar to Extended Backus Naur Form (EBNF)
+      <sup>[<a name="id591110" href="#ftn.id591110" class="footnote">1</a>]</sup>
+      directly in C++. These inline grammar specifications can mix freely with other
+      C++ code and, thanks to the generative power of C++ templates, are immediately
+      executable. In retrospect, conventional compiler-compilers or parser-generators
+      have to perform an additional translation step from the source EBNF code to
+      C or C++ code.
+    </p>
+<p>
+      The syntax and semantics of the libraries' API directly form domain-specific
+      embedded languages (DSEL). In fact, Spirit exposes 3 different DSELs to the
+      user:
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+        one for creating parser grammars,
+      </li>
+<li class="listitem">
+        one for the specification of the required tokens to be used for parsing,
+      </li>
+<li class="listitem">
+        and one for the description of the required output formats.
+      </li>
+</ul></div>
+<p>
+      Since the target input grammars and output formats are written entirely in
+      C++ we do not need any separate tools to compile, preprocess or integrate those
+      into the build process. Spirit
+      allows seamless integration of the parsing and output generation process with
+      other C++ code. This often allows for simpler and more efficient code.
+    </p>
+<p>
+      Both the created parsers and generators are fully attributed (more on that
+      later) which allows you to easily build and handle hierarchical data structures
+      in memory. These data structures resemble the structure of the input data and
+      can directly be used to generate arbitrarily-formatted output.
+    </p>
+<p>
+      The <a class="link" href="introduction.html#spirit.spiritstructure" title="Figure 1. The overall structure of the Boost Spirit library">figure</a> below depicts the
+      overall structure of the Boost Spirit library. The library consists of 4 major
+      parts:
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+Spirit.Classic:
+        This is the almost-unchanged code base taken from the former Boost Spirit
+        V1.8 distribution. It has been moved into the namespace boost::spirit::classic.
+        A special compatibility layer has been added to ensure complete compatibility
+        with existing code using Spirit V1.8.
+      </li>
+<li class="listitem">
+<span class="emphasis"><em>Spirit.Qi</em></span>: This is the parser library allowing you to
+        build recursive descent parsers. The exposed domain-specific language can
+        be used to describe the grammars to implement, and the rules for storing
+        the parsed information.
+      </li>
+<li class="listitem">
+<span class="emphasis"><em>Spirit.Lex</em></span>: This is the library usable to create tokenizers
+        (lexers). The domain-specific language exposed by <span class="emphasis"><em>Spirit.Lex</em></span>
+        allows to define regular expressions used to match tokens (create token definitions),
+        associate these regular expressions with code to be executed whenever they
+        are matched, and to add the token definitions to the lexical analyzer.
+      </li>
+<li class="listitem">
+<span class="emphasis"><em>Spirit.Karma</em></span>: This is the generator library allowing
+        you to create code for recursive descent, data type-driven output formatting.
+        The exposed domain-specific language is almost equivalent to the parser description
+        language used in <span class="emphasis"><em>Spirit.Qi</em></span>, except that it is used to
+        describe the required output format to generate from a given data structure.
+      </li>
+</ul></div>
+<p>
+      </p>
+<div class="figure">
+<a name="spirit.spiritstructure"></a><p class="title"><b>Figure 1. The overall structure of the Boost Spirit library</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src=".././images/spiritstructure.png" alt="The overall structure of the Boost Spirit library"></span></div>
+</div>
+<p><br class="figure-break">
+    </p>
+<p>
+      The separate sublibraries <span class="emphasis"><em>Spirit.Qi</em></span>, <span class="emphasis"><em>Spirit.Karma</em></span>
+      and <span class="emphasis"><em>Spirit.Lex</em></span> are well integrated with any of the other
+      parts. Because of their similar structure and identical underlying technology
+      these are usable either separately or together at the same time. For instance
+      is it possible to directly feed the hierarchical data structures generated
+      by <span class="emphasis"><em>Spirit.Qi</em></span> into output generators created using <span class="emphasis"><em>Spirit.Karma</em></span>;
+      or to use the token sequence generated by <span class="emphasis"><em>Spirit.Lex</em></span> as
+      the input for a parser generated by <span class="emphasis"><em>Spirit.Qi</em></span>.
+    </p>
+<p>
+      The <a class="link" href="introduction.html#spirit.spiritkarmaflow" title="Figure 2. The place of Spirit.Qi and Spirit.Karma in a data transformation flow of a typical application">figure</a> below shows the typical
+      data flow of some input being converted to some internal representation. After
+      some (optional) transformation these data are converted back into some different,
+      external representation. The picture highlights Spirit's place in this data
+      transformation flow.
+    </p>
+<p>
+      </p>
+<div class="figure">
+<a name="spirit.spiritkarmaflow"></a><p class="title"><b>Figure 2. The place of <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
+      in a data transformation flow of a typical application</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src=".././images/spiritkarmaflow.png" alt="The place of Spirit.Qi and Spirit.Karma in a data transformation flow of a typical application"></span></div>
+</div>
+<p><br class="figure-break">
+    </p>
+<a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h4>
+<a name="id591326"></a>
+      <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_">A
+      Quick Overview of Parsing with <span class="emphasis"><em>Spirit.Qi</em></span></a>
+    </h4>
+<p>
+      <span class="emphasis"><em>Spirit.Qi</em></span> is Spirit's sublibrary dealing with generating
+      parsers based on a given target grammar (essentially a format description of
+      the input data to read).
+    </p>
+<p>
+      A simple EBNF grammar snippet:
+    </p>
+<pre class="programlisting"><span class="identifier">group</span>       <span class="special">::=</span> <span class="char">'('</span> <span class="identifier">expression</span> <span class="char">')'</span>
+<span class="identifier">factor</span>      <span class="special">::=</span> <span class="identifier">integer</span> <span class="special">|</span> <span class="identifier">group</span>
+<span class="identifier">term</span>        <span class="special">::=</span> <span class="identifier">factor</span> <span class="special">((</span><span class="char">'*'</span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">|</span> <span class="special">(</span><span class="char">'/'</span> <span class="identifier">factor</span><span class="special">))*</span>
+<span class="identifier">expression</span>  <span class="special">::=</span> <span class="identifier">term</span> <span class="special">((</span><span class="char">'+'</span> <span class="identifier">term</span><span class="special">)</span> <span class="special">|</span> <span class="special">(</span><span class="char">'-'</span> <span class="identifier">term</span><span class="special">))*</span>
+</pre>
+<p>
+      is approximated using facilities of Spirit's <span class="emphasis"><em>Qi</em></span> sublibrary
+      as seen in this code snippet:
+    </p>
+<pre class="programlisting"><span class="identifier">group</span>       <span class="special">=</span> <span class="char">'('</span> <span class="special">>></span> <span class="identifier">expression</span> <span class="special">>></span> <span class="char">')'</span><span class="special">;</span>
+<span class="identifier">factor</span>      <span class="special">=</span> <span class="identifier">integer</span> <span class="special">|</span> <span class="identifier">group</span><span class="special">;</span>
+<span class="identifier">term</span>        <span class="special">=</span> <span class="identifier">factor</span> <span class="special">>></span> <span class="special">*((</span><span class="char">'*'</span> <span class="special">>></span> <span class="identifier">factor</span><span class="special">)</span> <span class="special">|</span> <span class="special">(</span><span class="char">'/'</span> <span class="special">>></span> <span class="identifier">factor</span><span class="special">));</span>
+<span class="identifier">expression</span>  <span class="special">=</span> <span class="identifier">term</span> <span class="special">>></span> <span class="special">*((</span><span class="char">'+'</span> <span class="special">>></span> <span class="identifier">term</span><span class="special">)</span> <span class="special">|</span> <span class="special">(</span><span class="char">'-'</span> <span class="special">>></span> <span class="identifier">term</span><span class="special">));</span>
+</pre>
+<p>
+      Through the magic of expression templates, this is perfectly valid and executable
+      C++ code. The production rule <code class="computeroutput"><span class="identifier">expression</span></code>
+      is, in fact, an object that has a member function <code class="computeroutput"><span class="identifier">parse</span></code>
+      that does the work given a source code written in the grammar that we have
+      just declared. Yes, it's a calculator. We shall simplify for now by skipping
+      the type declarations and the definition of the rule <code class="computeroutput"><span class="identifier">integer</span></code>
+      invoked by <code class="computeroutput"><span class="identifier">factor</span></code>. Now, the
+      production rule <code class="computeroutput"><span class="identifier">expression</span></code>
+      in our grammar specification, traditionally called the <code class="computeroutput"><span class="identifier">start</span></code>
+      symbol, can recognize inputs such as:
+    </p>
+<pre class="programlisting"><span class="number">12345</span>
+<span class="special">-</span><span class="number">12345</span>
+<span class="special">+</span><span class="number">12345</span>
+<span class="number">1</span> <span class="special">+</span> <span class="number">2</span>
+<span class="number">1</span> <span class="special">*</span> <span class="number">2</span>
+<span class="number">1</span><span class="special">/</span><span class="number">2</span> <span class="special">+</span> <span class="number">3</span><span class="special">/</span><span class="number">4</span>
+<span class="number">1</span> <span class="special">+</span> <span class="number">2</span> <span class="special">+</span> <span class="number">3</span> <span class="special">+</span> <span class="number">4</span>
+<span class="number">1</span> <span class="special">*</span> <span class="number">2</span> <span class="special">*</span> <span class="number">3</span> <span class="special">*</span> <span class="number">4</span>
+<span class="special">(</span><span class="number">1</span> <span class="special">+</span> <span class="number">2</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="number">3</span> <span class="special">+</span> <span class="number">4</span><span class="special">)</span>
+<span class="special">(-</span><span class="number">1</span> <span class="special">+</span> <span class="number">2</span><span class="special">)</span> <span class="special">*</span> <span class="special">(</span><span class="number">3</span> <span class="special">+</span> <span class="special">-</span><span class="number">4</span><span class="special">)</span>
+<span class="number">1</span> <span class="special">+</span> <span class="special">((</span><span class="number">6</span> <span class="special">*</span> <span class="number">200</span><span class="special">)</span> <span class="special">-</span> <span class="number">20</span><span class="special">)</span> <span class="special">/</span> <span class="number">6</span>
+<span class="special">(</span><span class="number">1</span> <span class="special">+</span> <span class="special">(</span><span class="number">2</span> <span class="special">+</span> <span class="special">(</span><span class="number">3</span> <span class="special">+</span> <span class="special">(</span><span class="number">4</span> <span class="special">+</span> <span class="number">5</span><span class="special">))))</span>
+</pre>
+<p>
+      Certainly we have modified the original EBNF syntax. This is done to conform
+      to C++ syntax rules. Most notably we see the abundance of shift >> operators.
+      Since there are no 'empty' operators in C++, it is simply not possible to write
+      something like:
+    </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="identifier">b</span>
+</pre>
+<p>
+      as seen in math syntax, for example, to mean multiplication or, in our case,
+      as seen in EBNF syntax to mean sequencing (b should follow a). <span class="emphasis"><em>Spirit.Qi</em></span>
+      uses the shift <code class="computeroutput"><span class="special">>></span></code> operator
+      instead for this purpose. We take the <code class="computeroutput"><span class="special">>></span></code>
+      operator, with arrows pointing to the right, to mean "is followed by".
+      Thus we write:
+    </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span>
+</pre>
+<p>
+      The alternative operator <code class="computeroutput"><span class="special">|</span></code> and
+      the parentheses <code class="computeroutput"><span class="special">()</span></code> remain as is.
+      The assignment operator <code class="computeroutput"><span class="special">=</span></code> is used
+      in place of EBNF's <code class="computeroutput"><span class="special">::=</span></code>. Last but
+      not least, the Kleene star <code class="computeroutput"><span class="special">*</span></code> which
+      used to be a postfix operator in EBNF becomes a prefix. Instead of:
+    </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">*</span> <span class="comment">//... in EBNF syntax,
+</span></pre>
+<p>
+      we write:
+    </p>
+<pre class="programlisting"><span class="special">*</span><span class="identifier">a</span> <span class="comment">//... in Spirit.
+</span></pre>
+<p>
+      since there are no postfix stars, <code class="computeroutput"><span class="special">*</span></code>,
+      in C/C++. Finally, we terminate each rule with the ubiquitous semi-colon,
+      <code class="computeroutput"><span class="special">;</span></code>.
+    </p>
+<a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h4>
+<a name="id592283"></a>
+      <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_">A
+      Quick Overview of Output Generation with <span class="emphasis"><em>Spirit.Karma</em></span></a>
+    </h4>
+<p>
+      Spirit not only allows you to describe the structure of the input. Starting
+      with Version 2.0 it enables the specification of the output format for your
+      data in a similar way, and based on a single syntax and compatible semantics.
+    </p>
+<p>
+      Let's assume we need to generate a textual representation from a simple data
+      structure such as a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>. Conventional
+      code probably would look like:
+    </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">v</span> <span class="special">(</span><span class="identifier">initialize_and_fill</span><span class="special">());</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">end</span> <span class="special">=</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">>::</span><span class="identifier">iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span> <span class="identifier">it</span> <span class="special">!=</span> <span class="identifier">end</span><span class="special">;</span> <span class="special">++</span><span class="identifier">it</span><span class="special">)</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="special">*</span><span class="identifier">it</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+      which is not very flexible and quite difficult to maintain when it comes to
+      changing the required output format. Spirit's sublibrary <span class="emphasis"><em>Karma</em></span>
+      allows you to specify output formats for arbitrary data structures in a very
+      flexible way. The following snippet is the <span class="emphasis"><em>Karma</em></span> format
+      description used to create the same output as the traditional code above:
+    </p>
+<pre class="programlisting"><span class="special">*(</span><span class="identifier">int_</span> <span class="special"><<</span> <span class="identifier">eol</span><span class="special">)</span>
+</pre>
+<p>
+      Here are some more examples of format descriptions for different output representations
+      of the same <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>:
+    </p>
+<div class="table">
+<a name="id594262"></a><p class="title"><b>Table 2. Different output formats for `std::vector<int>`</b></p>
+<div class="table-contents"><table class="table" summary="Different output formats for `std::vector<int>`">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+          <p>
+            Format
+          </p>
+          </th>
+<th>
+          <p>
+            Example
+          </p>
+          </th>
+<th>
+          <p>
+            Description
+          </p>
+          </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="char">'['</span> <span class="special"><<</span>
+            <span class="special">*(</span><span class="identifier">int_</span>
+            <span class="special"><<</span> <span class="char">','</span><span class="special">)</span> <span class="special"><<</span> <span class="char">']'</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            <code class="computeroutput"><span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">10</span><span class="special">,]</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            Comma separated list of integers
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="special">*(</span><span class="char">'('</span>
+            <span class="special"><<</span> <span class="identifier">int_</span>
+            <span class="special"><<</span> <span class="char">')'</span>
+            <span class="special"><<</span> <span class="char">','</span><span class="special">)</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            <code class="computeroutput"><span class="special">(</span><span class="number">1</span><span class="special">),(</span><span class="number">8</span><span class="special">),(</span><span class="number">10</span><span class="special">),</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            Comma separated list of integers in parenthesis
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="special">*</span><span class="identifier">hex</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            <code class="computeroutput"><span class="number">18</span><span class="identifier">a</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            A list of hexadecimal numbers
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="special">*(</span><span class="identifier">double_</span>
+            <span class="special"><<</span> <span class="char">','</span><span class="special">)</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            <code class="computeroutput"><span class="number">1.0</span><span class="special">,</span><span class="number">8.0</span><span class="special">,</span><span class="number">10.0</span><span class="special">,</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            A list of floating point numbers
+          </p>
+          </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+      We will see later in this documentation how it is possible to avoid printing
+      the trailing <code class="computeroutput"><span class="char">','</span></code>.
+    </p>
+<p>
+      Overall, the syntax is similar to <span class="emphasis"><em>Spirit.Qi</em></span> with the exception
+      that we use the <code class="computeroutput"><span class="special"><<</span></code> operator
+      for output concatenation. This should be easy to understand as it follows the
+      conventions used in the Standard's I/O streams.
+    </p>
+<p>
+      Another important feature of <span class="emphasis"><em>Spirit.Karma</em></span> allows you to
+      fully decouple the data type from the output format. You can use the same output
+      format with different data types as long as these conform conceptually. The
+      next table gives some related examples.
+    </p>
+<div class="table">
+<a name="id594646"></a><p class="title"><b>Table 3. Different data types usable with the output format
+    `*(int_ << eol)`</b></p>
+<div class="table-contents"><table class="table" summary="Different data types usable with the output format
+    `*(int_ << eol)`">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+          <p>
+            Data type
+          </p>
+          </th>
+<th>
+          <p>
+            Description
+          </p>
+          </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">[</span><span class="number">4</span><span class="special">]</span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            C style arrays
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            Standard vector
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            Standard list
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special"><</span><span class="keyword">long</span><span class="special">,</span> <span class="number">20</span><span class="special">></span></code>
+          </p>
+          </td>
+<td>
+          <p>
+            Boost array
+          </p>
+          </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id591110" href="#id591110" class="para">1</a>] </sup>
+          ISO-EBNF
+        </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="what_s_new.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="structure.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Karma - Writing Generators</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="qi/reference/string/symbols.html" title="Symbols (symbols)">
+<link rel="next" href="karma/tutorials.html" title="Tutorials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qi/reference/string/symbols.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma/tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Karma - Writing Generators">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.karma"></a><a class="link" href="karma.html" title="Karma - Writing Generators"> Karma - Writing Generators</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Tutorials</span></dt>
+<dd><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="karma/tutorials/karma_complex.html"> Complex - A
+        first more complex generator</a></span></dt>
+<dt><span class="section"><a href="karma/tutorials/karma_attributes.html"> Understanding
+        Generator Attributes</a></span></dt>
+<dt><span class="section"><a href="karma/tutorials/karma_easier_complex.html"> Complex
+        - Made easier</a></span></dt>
+</dl></dd>
+<dt><span class="section">Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="karma/quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="karma/quick_reference/primitive_generators.html">
+        Karma Generators</a></span></dt>
+<dt><span class="section"><a href="karma/quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="karma/quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="karma/reference/generator_concepts.html">Generator
+        Concepts</a></span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"> Char</span></dt>
+<dt><span class="section">String</span></dt>
+<dt><span class="section"> Numeric</span></dt>
+<dt><span class="section">Stream</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Operator</span></dt>
+</dl></dd>
+<dt><span class="section">Performance Measurements</span></dt>
+<dd><dl><dt><span class="section"><a href="karma/performance_measurements/numeric_performance.html">
+        Performance of Numeric Generators</a></span></dt></dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qi/reference/string/symbols.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma/tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Performance Measurements</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../karma.html" title="Karma - Writing Generators">
+<link rel="prev" href="reference/operator/not_predicate.html" title="Not Predicate (!a)">
+<link rel="next" href="performance_measurements/numeric_performance.html" title="Performance of Numeric Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/operator/not_predicate.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="performance_measurements/numeric_performance.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Performance Measurements">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.karma.performance_measurements"></a><a class="link" href="performance_measurements.html" title="Performance Measurements">Performance Measurements</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="performance_measurements/numeric_performance.html">
+        Performance of Numeric Generators</a></span></dt></dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/operator/not_predicate.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="performance_measurements/numeric_performance.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Performance of Numeric Generators</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../performance_measurements.html" title="Performance Measurements">
+<link rel="prev" href="../performance_measurements.html" title="Performance Measurements">
+<link rel="next" href="numeric_performance/int_performance.html" title="Comparing the performance of a single int_ generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_performance/int_performance.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Performance of Numeric Generators">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance"></a><a class="link" href="numeric_performance.html" title="Performance of Numeric Generators">
+        Performance of Numeric Generators</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="numeric_performance/int_performance.html">
+          Comparing the performance of a single int_ generator</a></span></dt>
+<dt><span class="section"><a href="numeric_performance/double_performance.html">
+          Comparing the performance of a single double_ generator</a></span></dt>
+<dt><span class="section"><a href="numeric_performance/format_performance.html">
+          Comparing the performance of a sequence of several generators</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_performance/int_performance.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,363 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Comparing the performance of a single double_ generator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="prev" href="int_performance.html" title="Comparing the performance of a single int_ generator">
+<link rel="next" href="format_performance.html" title="Comparing the performance of a sequence of several generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="int_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="format_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Comparing the performance of a single double_ generator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.double_performance"></a><a class="link" href="double_performance.html" title="Comparing the performance of a single double_ generator">
+          Comparing the performance of a single double_ generator</a>
+</h5></div></div></div>
+<p>
+            This performance measurements are centered around default formatting
+            of a single <code class="computeroutput"><span class="keyword">double</span></code> floating
+            point number using different libraries and methods. The overall execution
+            times for those examples are compared below. We compare using <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams, Boost.Format,
+            and <span class="emphasis"><em>Spirit.Karma</em></span>.
+          </p>
+<p>
+            For the full source code of the performance test please see here: double_performance.cpp).
+            All the measurements have been done by executing 1000000 iterations for
+            each formatting type (NUMITERATIONS is set to 1000000 in the code shown
+            below).
+          </p>
+<p>
+            Code used to measure the performance for <code class="computeroutput"><span class="identifier">sprintf</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">sprintf</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">,</span> <span class="string">"%f"</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for standard C++ iostreams:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+    <span class="identifier">strm</span> <span class="special"><<</span> <span class="number">12345.12345</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for Boost.Format:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">generated</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span> <span class="identifier">double_format</span><span class="special">(</span><span class="string">"%f"</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> 
+    <span class="identifier">generated</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">double_format</span> <span class="special">%</span> <span class="number">12345.12345</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The following code shows the common definitions used by all <span class="emphasis"><em>Spirit.Karma</em></span>
+            performance measurements as listed below:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for <span class="emphasis"><em>Spirit.Karma</em></span>
+            using a plain character buffer:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+    <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+    <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The following table shows the overall performance results collected while
+            using different compilers. All times are in seconds measured for 1000000
+            iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
+            4GByte RAM). For a more readable comparison of the results see this
+            <a class="link" href="double_performance.html#spirit.karma.double_performance" title="Figure 4. Performance comparison for a single double">figure</a>.
+          </p>
+<div class="table">
+<a name="id847622"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
+          times in [s], 1000000 iterations)</b></p>
+<div class="table-contents"><table class="table" summary="Performance comparison for a single double (all
+          times in [s], 1000000 iterations)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Library
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (64 bit)
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  sprintf
+                </p>
+                </td>
+<td>
+                <p>
+                  0.755
+                </p>
+                </td>
+<td>
+                <p>
+                  0.965
+                </p>
+                </td>
+<td>
+                <p>
+                  0.880
+                </p>
+                </td>
+<td>
+                <p>
+                  0.713
+                </p>
+                </td>
+<td>
+                <p>
+                  0.807
+                </p>
+                </td>
+<td>
+                <p>
+                  0.694
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  iostreams
+                </p>
+                </td>
+<td>
+                <p>
+                  2.316
+                </p>
+                </td>
+<td>
+                <p>
+                  2.624
+                </p>
+                </td>
+<td>
+                <p>
+                  1.964
+                </p>
+                </td>
+<td>
+                <p>
+                  1.634
+                </p>
+                </td>
+<td>
+                <p>
+                  1.468
+                </p>
+                </td>
+<td>
+                <p>
+                  1.354
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  Boost.Format
+                </p>
+                </td>
+<td>
+                <p>
+                  3.188
+                </p>
+                </td>
+<td>
+                <p>
+                  3.737
+                </p>
+                </td>
+<td>
+                <p>
+                  2.878
+                </p>
+                </td>
+<td>
+                <p>
+                  3.217
+                </p>
+                </td>
+<td>
+                <p>
+                  2.672
+                </p>
+                </td>
+<td>
+                <p>
+                  2.011
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <span class="emphasis"><em>Spirit.Karma</em></span> double_
+                </p>
+                </td>
+<td>
+                <p>
+                  0.813
+                </p>
+                </td>
+<td>
+                <p>
+                  0.561
+                </p>
+                </td>
+<td>
+                <p>
+                  0.368
+                </p>
+                </td>
+<td>
+                <p>
+                  0.426
+                </p>
+                </td>
+<td>
+                <p>
+                  0.260
+                </p>
+                </td>
+<td>
+                <p>
+                  0.218
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+            </p>
+<div class="figure">
+<a name="spirit.karma.double_performance"></a><p class="title"><b>Figure 4. Performance comparison for a single double</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/double_performance.png" alt="Performance comparison for a single double"></span></div>
+</div>
+<p><br class="figure-break">
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="int_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="format_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,384 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Comparing the performance of a sequence of several generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="prev" href="double_performance.html" title="Comparing the performance of a single double_ generator">
+<link rel="next" href="../../../lex.html" title="Lex - Writing Lexical Analyzers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="double_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Comparing the performance of a sequence of several generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.format_performance"></a><a class="link" href="format_performance.html" title="Comparing the performance of a sequence of several generators">
+          Comparing the performance of a sequence of several generators</a>
+</h5></div></div></div>
+<p>
+            This performance measurements are centered around formatting of a sequence
+            of different items, including 2 <code class="computeroutput"><span class="keyword">double</span></code>
+            floating point numbers using different libraries and methods. The overall
+            execution times for those examples are compared below. We compare using
+            <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams,
+            Boost.Format, and
+            <span class="emphasis"><em>Spirit.Karma</em></span>.
+          </p>
+<p>
+            For the full source code of the performance test please see here: format_performance.cpp).
+            All the measurements have been done by doing 1000000 iterations for each
+            formatting type (NUMITERATIONS is set to 1000000).
+          </p>
+<p>
+            Code used to measure the performance for sprintf:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">sprintf</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">,</span> <span class="string">"[%-14.3f%-14.3f]"</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for standard iostreams:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+    <span class="identifier">strm</span> <span class="special"><<</span> <span class="char">'['</span> 
+      <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setiosflags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">)</span>
+      <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span>
+      <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span>
+      <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="number">14</span><span class="special">)</span>
+      <span class="special"><<</span> <span class="number">12345.12345</span>
+      <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="number">14</span><span class="special">)</span>
+      <span class="special"><<</span> <span class="number">12345.12345</span>
+      <span class="special"><<</span> <span class="char">']'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for Boost.Format:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">generated</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span> <span class="identifier">outformat</span><span class="special">(</span><span class="string">"[%-14.3f%-14.3f]"</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+    <span class="identifier">generated</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">outformat</span> <span class="special">%</span> <span class="number">12345.12345</span> <span class="special">%</span> <span class="number">12345.12345</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The following code shows the common definitions used by all <span class="emphasis"><em>Spirit.Karma</em></span>
+            performance measurements as listed below:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">double3_policy</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>   
+<span class="special">{</span>
+    <span class="comment">//  we want to generate up to 3 fractional digits
+</span>    <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">precision</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">3</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_generator</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">double3_policy</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span> 
+    <span class="identifier">double3_type</span><span class="special">;</span>
+<span class="identifier">double3_type</span> <span class="keyword">const</span> <span class="identifier">double3</span> <span class="special">=</span> <span class="identifier">double3_type</span><span class="special">();</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for <span class="emphasis"><em>Spirit.Karma</em></span>
+            using a plain character buffer:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+    <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span>
+      <span class="special">,</span> <span class="char">'['</span> <span class="special"><<</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">']'</span>
+      <span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+    <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The following table shows the overall performance results collected while
+            using different compilers. All times are in seconds measured for 1000000
+            iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
+            4GByte RAM). For a more readable comparison of the results see this
+            <a class="link" href="format_performance.html#spirit.karma.format_performance" title="Figure 5. Performance comparison for a sequence of several items">figure</a>.
+          </p>
+<div class="table">
+<a name="id849689"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
+          items (all times in [s], 1000000 iterations)</b></p>
+<div class="table-contents"><table class="table" summary="Performance comparison for a sequence of several
+          items (all times in [s], 1000000 iterations)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Library
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (64 bit)
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  sprintf
+                </p>
+                </td>
+<td>
+                <p>
+                  1.725
+                </p>
+                </td>
+<td>
+                <p>
+                  1.892
+                </p>
+                </td>
+<td>
+                <p>
+                  1.903
+                </p>
+                </td>
+<td>
+                <p>
+                  1.469
+                </p>
+                </td>
+<td>
+                <p>
+                  1.608
+                </p>
+                </td>
+<td>
+                <p>
+                  1.493
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  iostreams
+                </p>
+                </td>
+<td>
+                <p>
+                  4.827
+                </p>
+                </td>
+<td>
+                <p>
+                  5.287
+                </p>
+                </td>
+<td>
+                <p>
+                  4.444
+                </p>
+                </td>
+<td>
+                <p>
+                  3.112
+                </p>
+                </td>
+<td>
+                <p>
+                  3.319
+                </p>
+                </td>
+<td>
+                <p>
+                  2.877
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  Boost.Format
+                </p>
+                </td>
+<td>
+                <p>
+                  5.881
+                </p>
+                </td>
+<td>
+                <p>
+                  7.089
+                </p>
+                </td>
+<td>
+                <p>
+                  5.801
+                </p>
+                </td>
+<td>
+                <p>
+                  5.455
+                </p>
+                </td>
+<td>
+                <p>
+                  5.254
+                </p>
+                </td>
+<td>
+                <p>
+                  4.164
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <span class="emphasis"><em>Spirit.Karma</em></span>
+                </p>
+                </td>
+<td>
+                <p>
+                  1.942
+                </p>
+                </td>
+<td>
+                <p>
+                  1.242
+                </p>
+                </td>
+<td>
+                <p>
+                  0.999
+                </p>
+                </td>
+<td>
+                <p>
+                  1.334
+                </p>
+                </td>
+<td>
+                <p>
+                  0.758
+                </p>
+                </td>
+<td>
+                <p>
+                  0.686
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+            </p>
+<div class="figure">
+<a name="spirit.karma.format_performance"></a><p class="title"><b>Figure 5. Performance comparison for a sequence
+            of several items</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/format_performance.png" alt="Performance comparison for a sequence of several items"></span></div>
+</div>
+<p><br class="figure-break">
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="double_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,353 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Comparing the performance of a single int_ generator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="prev" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="next" href="double_performance.html" title="Comparing the performance of a single double_ generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="double_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Comparing the performance of a single int_ generator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.int_performance"></a><a class="link" href="int_performance.html" title="Comparing the performance of a single int_ generator">
+          Comparing the performance of a single int_ generator</a>
+</h5></div></div></div>
+<p>
+            This performance measurements are centered around default formatting
+            of a single <code class="computeroutput"><span class="keyword">int</span></code> integer
+            number using different libraries and methods. The overall execution times
+            for those examples are compared below. We compare using <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams, Boost.Format,
+            and <span class="emphasis"><em>Spirit.Karma</em></span>.
+          </p>
+<p>
+            For the full source code of the performance test please see here: int_generator.cpp).
+            All the measurements have been done by executing 10000000 iterations
+            for each formatting type (NUMITERATIONS is set to 10000000 in the code
+            shown below).
+          </p>
+<p>
+            Code used to measure the performance for <code class="computeroutput"><span class="identifier">ltoa</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">65</span><span class="special">];</span> <span class="comment">// we don't expect more than 64 bytes to be generated here
+</span><span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">MAX_ITERATION</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">ltoa</span><span class="special">(</span><span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">],</span> <span class="identifier">buffer</span><span class="special">,</span> <span class="number">10</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for standard C++ iostreams:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">MAX_ITERATION</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">str</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+    <span class="identifier">str</span> <span class="special"><<</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">];</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for Boost.Format:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span> <span class="identifier">int_format</span><span class="special">(</span><span class="string">"%d"</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">MAX_ITERATION</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">str</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">str</span><span class="special">(</span><span class="identifier">int_format</span> <span class="special">%</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Code used to measure the performance for <span class="emphasis"><em>Spirit.Karma</em></span>
+            using a plain character buffer:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">65</span><span class="special">];</span> <span class="comment">// we don't expect more than 64 bytes to be generated here
+</span><span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">MAX_ITERATION</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">char</span> <span class="special">*</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+    <span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">v</span><span class="special">[</span><span class="identifier">i</span><span class="special">]);</span>
+    <span class="special">*</span><span class="identifier">ptr</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The following table shows the overall performance results collected while
+            using different compilers. All times are in seconds measured for 10000000
+            iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
+            4GByte RAM). For a more readable comparison of the results see this
+            <a class="link" href="int_performance.html#spirit.karma.int_performance" title="Figure 3. Performance comparison for a single int">figure</a>.
+          </p>
+<div class="table">
+<a name="id845463"></a><p class="title"><b>Table 5. Performance comparison for a single int (all
+          times in [s], 10000000 iterations)</b></p>
+<div class="table-contents"><table class="table" summary="Performance comparison for a single int (all
+          times in [s], 10000000 iterations)">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Library
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (32 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  gcc 4.4.0 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  VC++ 10 (64 bit)
+                </p>
+                </th>
+<th>
+                <p>
+                  Intel 11.1 (64 bit)
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  ltoa
+                </p>
+                </td>
+<td>
+                <p>
+                  1.542
+                </p>
+                </td>
+<td>
+                <p>
+                  0.895
+                </p>
+                </td>
+<td>
+                <p>
+                  0.884
+                </p>
+                </td>
+<td>
+                <p>
+                  1.163
+                </p>
+                </td>
+<td>
+                <p>
+                  1.099
+                </p>
+                </td>
+<td>
+                <p>
+                  0.906
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  iostreams
+                </p>
+                </td>
+<td>
+                <p>
+                  6.548
+                </p>
+                </td>
+<td>
+                <p>
+                  13.727
+                </p>
+                </td>
+<td>
+                <p>
+                  11.898
+                </p>
+                </td>
+<td>
+                <p>
+                  3.464
+                </p>
+                </td>
+<td>
+                <p>
+                  8.316
+                </p>
+                </td>
+<td>
+                <p>
+                  8.115
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  Boost.Format
+                </p>
+                </td>
+<td>
+                <p>
+                  16.998
+                </p>
+                </td>
+<td>
+                <p>
+                  21.813
+                </p>
+                </td>
+<td>
+                <p>
+                  20.477
+                </p>
+                </td>
+<td>
+                <p>
+                  17.464
+                </p>
+                </td>
+<td>
+                <p>
+                  14.662
+                </p>
+                </td>
+<td>
+                <p>
+                  13.646
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <span class="emphasis"><em>Spirit.Karma</em></span> int_
+                </p>
+                </td>
+<td>
+                <p>
+                  1.421
+                </p>
+                </td>
+<td>
+                <p>
+                  0.744
+                </p>
+                </td>
+<td>
+                <p>
+                  0.697
+                </p>
+                </td>
+<td>
+                <p>
+                  1.072
+                </p>
+                </td>
+<td>
+                <p>
+                  0.953
+                </p>
+                </td>
+<td>
+                <p>
+                  0.606
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+            </p>
+<div class="figure">
+<a name="spirit.karma.int_performance"></a><p class="title"><b>Figure 3. Performance comparison for a single int</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/int_performance.png" alt="Performance comparison for a single int"></span></div>
+</div>
+<p><br class="figure-break">
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="double_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,63 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quick Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../karma.html" title="Karma - Writing Generators">
+<link rel="prev" href="tutorials/karma_easier_complex.html" title="Complex - Made easier">
+<link rel="next" href="quick_reference/common_notation.html" title="Common Notation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/karma_easier_complex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quick Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.karma.quick_reference"></a><a class="link" href="quick_reference.html" title="Quick Reference">Quick Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="quick_reference/primitive_generators.html">
+        Karma Generators</a></span></dt>
+<dt><span class="section"><a href="quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></div>
+<p>
+        This quick reference section is provided for convenience. You can use this
+        section as a sort of a "cheat-sheet" on the most commonly used
+        Karma components. It is not intended to be complete, but should give you
+        an easy way to recall a particular component without having to dig up on
+        pages and pages of reference doumentation.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/karma_easier_complex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,157 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Common Notation</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="../quick_reference.html" title="Quick Reference">
+<link rel="next" href="primitive_generators.html" title="Karma Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitive_generators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Common Notation">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.common_notation"></a><a class="link" href="common_notation.html" title="Common Notation">Common
+        Notation</a>
+</h4></div></div></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dd><p>
+              Generator type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span>
+          <span class="identifier">b</span><span class="special">,</span>
+          <span class="identifier">c</span><span class="special">,</span>
+          <span class="identifier">d</span></code></span></dt>
+<dd><p>
+              Generator objects
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span>
+          <span class="identifier">C</span><span class="special">,</span>
+          <span class="identifier">D</span></code></span></dt>
+<dd><p>
+              Attribute types of generators <code class="computeroutput"><span class="identifier">a</span></code>,
+              <code class="computeroutput"><span class="identifier">b</span></code>, <code class="computeroutput"><span class="identifier">c</span></code>,
+              and <code class="computeroutput"><span class="identifier">d</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">I</span></code></span></dt>
+<dd><p>
+              The iterator type used for generation
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Unused</span></code></span></dt>
+<dd><p>
+              An <code class="computeroutput"><span class="identifier">unused_type</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dd><p>
+              The enclosing rule's <code class="computeroutput"><span class="identifier">Context</span></code>
+              type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">attrib</span></code></span></dt>
+<dd><p>
+              A attribute value
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></span></dt>
+<dd><p>
+              An attribute type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+              A boolean expression
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fg</span></code></span></dt>
+<dd><p>
+              A (lazy generator) function with signature <code class="computeroutput"><span class="identifier">G</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
+<dd><p>
+              A (semantic action) function with signature <code class="computeroutput"><span class="keyword">void</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">&)</span></code>. The third parameter is a boolean
+              flag that can be set to false to force the generator to fail. Both
+              <code class="computeroutput"><span class="identifier">Context</span></code> and the boolean
+              flag are optional.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">outiter</span></code></span></dt>
+<dd><p>
+              An output iterator to receive the generated output
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Ch</span></code></span></dt>
+<dd><p>
+              Character-class specific character type (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span><span class="special">,</span> <span class="identifier">ch2</span></code></span></dt>
+<dd><p>
+              Character-class specific character (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">charset</span></code></span></dt>
+<dd><p>
+              Character-set specifier string (example: "a-z0-9")
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">str</span></code></span></dt>
+<dd><p>
+              Character-class specific string (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Str</span></code></span></dt>
+<dd><p>
+              Attribute of <code class="computeroutput"><span class="identifier">str</span></code>:
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+              where <code class="computeroutput"><span class="identifier">T</span></code> is the underlying
+              character type of <code class="computeroutput"><span class="identifier">str</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dd><p>
+              Numeric literal, any integer or real number type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Num</span></code></span></dt>
+<dd><p>
+              Attribute of <code class="computeroutput"><span class="identifier">num</span></code>: any
+              integer or real number type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">tuple</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a fusion sequence
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">vector</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for an STL container
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">variant</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a boost::variant
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">optional</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a boost::optional
+            </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitive_generators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,276 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Compound Attribute Rules</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="primitive_generators/directives.html" title="Generator Directives">
+<link rel="next" href="non_terminals.html" title="Non-terminals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitive_generators/directives.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_terminals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Compound Attribute Rules">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.compound_attribute_rules"></a><a class="link" href="compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+        Attribute Rules</a>
+</h4></div></div></div>
+<a name="spirit.karma.quick_reference.compound_attribute_rules.notation"></a><h6>
+<a name="id731527"></a>
+          <a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Notation</a>
+        </h6>
+<p>
+          The notation we will use will be of the form:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...</span> <span class="special">--></span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span><span class="special">:</span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">a</span></code>, <code class="computeroutput"><span class="identifier">b</span></code>,
+          etc. are the operands. <code class="computeroutput"><span class="identifier">A</span></code>,
+          <code class="computeroutput"><span class="identifier">B</span></code>, etc. are the operand's
+          attribute types. <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span></code>
+          is the expression involving the operands and <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span></code>
+          is the resulting attribute type of the composite expression.
+        </p>
+<p>
+          For instance:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+</pre>
+<p>
+          which reads as: given, <code class="computeroutput"><span class="identifier">a</span></code>
+          and <code class="computeroutput"><span class="identifier">b</span></code> are generators, and
+          <code class="computeroutput"><span class="identifier">A</span></code> is the type of the attribute
+          of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">B</span></code> is the type of the attribute of <code class="computeroutput"><span class="identifier">b</span></code>, then the type of the attribute of
+          <code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+          <span class="identifier">b</span></code> will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>.
+        </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            In the attribute tables, we will use <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">...></span></code> as placeholders only. The notation
+            of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+            stands for <span class="emphasis"><em>any STL
+            container</em></span> holding elements of type <code class="computeroutput"><span class="identifier">A</span></code>
+            and the notation <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">...></span></code> stands for <span class="emphasis"><em>any Boost.Fusion sequence</em></span>
+            holding <code class="computeroutput"><span class="identifier">A</span></code>, <code class="computeroutput"><span class="identifier">B</span></code>, ... etc. elements. The notation
+            of <code class="computeroutput"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...></span></code> stands for <span class="emphasis"><em>a Boost.Variant</em></span>
+            capable of holding <code class="computeroutput"><span class="identifier">A</span></code>,
+            <code class="computeroutput"><span class="identifier">B</span></code>, ... etc. elements.
+            Finally, <code class="computeroutput"><span class="identifier">Unused</span></code> stands
+            for <code class="computeroutput"><span class="identifier">unused_type</span></code>.
+          </p></td></tr>
+</table></div>
+<a name="spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types"></a><h6>
+<a name="id732062"></a>
+          <a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types">Compound
+          Generator Attribute Types</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Attribute
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/sequence.html" title="Sequences (a << b)">sequence
+                  (<code class="computeroutput"><span class="special"><<</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/alternative.html" title="Alternative (a | b)">alternative
+                  (<code class="computeroutput"><span class="special">|</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/kleene.html" title="Kleene Star (*a)">kleene (unary
+                  <code class="computeroutput"><span class="special">*</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/plus.html" title="Plus (+a)">plus (unary
+                  <code class="computeroutput"><span class="special">+</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/list.html" title="Lists (a % b)">list (<code class="computeroutput"><span class="special">%</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/directive/repeat.html" title="Repetition Directive (repeat[])">repetition</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/optional.html" title="Optional (-a)">optional
+                  (unary <code class="computeroutput"><span class="special">-</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/and_predicate.html" title="And Predicate (&a)">and
+                  predicate (unary <code class="computeroutput"><span class="special">&</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                  <span class="identifier">A</span> <span class="special">--></span>
+                  <span class="special">&</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <a class="link" href="../reference/operator/not_predicate.html" title="Not Predicate (!a)">not
+                  predicate (unary <code class="computeroutput"><span class="special">!</span></code>)</a>
+                </p>
+                </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                  <span class="identifier">A</span> <span class="special">--></span>
+                  <span class="special">!</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitive_generators/directives.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_terminals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,329 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Non-terminals</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="compound_attribute_rules.html" title="Compound Attribute Rules">
+<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compound_attribute_rules.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Non-terminals">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.non_terminals"></a><a class="link" href="non_terminals.html" title="Non-terminals">Non-terminals</a>
+</h4></div></div></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">RT</span></code></span></dt>
+<dd><p>
+              Synthesized attribute. The rule or grammar's return type.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Arg1</span></code>,
+          <code class="computeroutput"><span class="identifier">Arg2</span></code>, <code class="computeroutput"><span class="identifier">ArgN</span></code></span></dt>
+<dd><p>
+              Inherited attributes. Zero or more arguments.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L1</span></code>,
+          <code class="computeroutput"><span class="identifier">L2</span></code>, <code class="computeroutput"><span class="identifier">LN</span></code></span></dt>
+<dd><p>
+              Zero or more local variables.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">r</span><span class="special">,</span> <span class="identifier">r2</span></code></span></dt>
+<dd><p>
+              Rules
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+              A grammar
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+              A generator expression
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">my_grammar</span></code></span></dt>
+<dd><p>
+              A user defined grammar
+            </p></dd>
+</dl>
+</div>
+<div class="variablelist" title="Terminology">
+<p class="title"><b>Terminology</b></p>
+<dl>
+<dt><span class="term">Signature</span></dt>
+<dd><p>
+              <code class="computeroutput"><span class="identifier">RT</span><span class="special">(</span><span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="special">...</span>
+              <span class="special">,</span><span class="identifier">ArgN</span><span class="special">)</span></code>. The signature specifies the synthesized
+              (return value) and inherited (arguments) attributes.
+            </p></dd>
+<dt><span class="term">Locals</span></dt>
+<dd><p>
+              <code class="computeroutput"><span class="identifier">locals</span><span class="special"><</span><span class="identifier">L1</span><span class="special">,</span> <span class="identifier">L2</span> <span class="special">...,</span>
+              <span class="identifier">LN</span><span class="special">></span></code>.
+              The local variables.
+            </p></dd>
+<dt><span class="term">Delimiter</span></dt>
+<dd><p>
+              The delimit-generator type
+            </p></dd>
+</dl>
+</div>
+<div class="variablelist" title="Template Arguments">
+<p class="title"><b>Template Arguments</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+              The iterator type you will use for parsing.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A1</span></code>,
+          <code class="computeroutput"><span class="identifier">A2</span></code>, <code class="computeroutput"><span class="identifier">A3</span></code></span></dt>
+<dd><p>
+              Can be one of 1)Signature 2)Locals 3)Skipper.
+            </p></dd>
+</dl>
+</div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span>
+                  <span class="identifier">A1</span><span class="special">,</span>
+                  <span class="identifier">A2</span><span class="special">,</span>
+                  <span class="identifier">A3</span><span class="special">></span>
+                  <span class="identifier">r</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Rule declaration. <code class="computeroutput"><span class="identifier">Iterator</span></code>
+                  is required. <code class="computeroutput"><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span></code>
+                  are optional and can be specified in any order. <code class="computeroutput"><span class="identifier">name</span></code>
+                  is an optional string that gives the rule its name, useful for
+                  debugging and error handling.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span>
+                  <span class="identifier">A1</span><span class="special">,</span>
+                  <span class="identifier">A2</span><span class="special">,</span>
+                  <span class="identifier">A3</span><span class="special">></span>
+                  <span class="identifier">r</span><span class="special">(</span><span class="identifier">r2</span><span class="special">);</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Copy construct rule <code class="computeroutput"><span class="identifier">r</span></code>
+                  from rule <code class="computeroutput"><span class="identifier">r2</span></code>.
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+                  <span class="identifier">r2</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Assign rule <code class="computeroutput"><span class="identifier">r2</span></code>
+                  to <code class="computeroutput"><span class="identifier">r</span></code>. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">alias</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  return an alias of <code class="computeroutput"><span class="identifier">r</span></code>.
+                  The alias is a generator that holds a reference to <code class="computeroutput"><span class="identifier">r</span></code>. Reference semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">copy</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Get a copy of <code class="computeroutput"><span class="identifier">r</span></code>.
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Naming a rule
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Getting the name of a rule
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+                  <span class="identifier">g</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Rule definition
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">%=</span>
+                  <span class="identifier">g</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Auto-rule definition. The attribute of <code class="computeroutput"><span class="identifier">g</span></code>
+                  should be compatible with the synthesized attribute of <code class="computeroutput"><span class="identifier">r</span></code>. When <code class="computeroutput"><span class="identifier">g</span></code>
+                  is successful, its attribute is automatically propagated to <code class="computeroutput"><span class="identifier">r</span></code>'s synthesized attribute.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">my_grammar</span> <span class="special">:</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">my_grammar</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">my_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">,</span> <span class="identifier">name</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="comment">// Rule definitions
+</span>        <span class="identifier">start</span> <span class="special">=</span> <span class="comment">/* ... */</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+    <span class="comment">// more rule declarations...
+</span><span class="special">};</span>
+</pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+                  Grammar definition. <code class="computeroutput"><span class="identifier">name</span></code>
+                  is an optional string that gives the grammar its name, useful for
+                  debugging and error handling.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  my_grammar<Iterator> g
+                </p>
+                </td>
+<td>
+                <p>
+                  Instantiating a grammar
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Naming a grammar
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Getting the name of a grammar
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compound_attribute_rules.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,90 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Phoenix</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Phoenix">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.phoenix"></a><a class="link" href="phoenix.html" title="Phoenix">Phoenix</a>
+</h4></div></div></div>
+<p>
+          Boost.Phoenix makes
+          it easier to attach semantic actions. You just inline your lambda expressions:
+        </p>
+<pre class="programlisting"><span class="identifier">g</span><span class="special">[</span><span class="identifier">phoenix</span><span class="special">-</span><span class="identifier">lambda</span><span class="special">-</span><span class="identifier">expression</span><span class="special">]</span>
+</pre>
+<p>
+          <span class="emphasis"><em>Spirit.Karma</em></span> provides some Boost.Phoenix
+          placeholders to access important information from the <code class="computeroutput"><span class="identifier">Attrib</span></code>
+          and <code class="computeroutput"><span class="identifier">Context</span></code> that are otherwise
+          fiddly to extract.
+        </p>
+<div class="variablelist" title="Spirit.Karma specific Phoenix placeholders">
+<p class="title"><b>Spirit.Karma specific Phoenix placeholders</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_1</span><span class="special">,</span> <span class="identifier">_2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_N</span></code></span></dt>
+<dd><p>
+              Nth attribute of <code class="computeroutput"><span class="identifier">g</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dd><p>
+              The enclosing rule's synthesized attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_r1</span><span class="special">,</span> <span class="identifier">_r2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_rN</span></code></span></dt>
+<dd><p>
+              The enclosing rule's Nth inherited attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_a</span><span class="special">,</span> <span class="identifier">_b</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_j</span></code></span></dt>
+<dd><p>
+              The enclosing rule's local variables (<code class="computeroutput"><span class="identifier">_a</span></code>
+              refers to the first).
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dd><p>
+              The enclosing rule's synthesized attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_pass</span></code></span></dt>
+<dd><p>
+              Assign <code class="computeroutput"><span class="keyword">false</span></code> to <code class="computeroutput"><span class="identifier">_pass</span></code> to force a generator failure.
+            </p></dd>
+</dl>
+</div>
+<p>
+          For more information see <a class="link" href="../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
+          Actions</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Karma Generators</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="common_notation.html" title="Common Notation">
+<link rel="next" href="primitive_generators/char.html" title="Character Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitive_generators/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Karma Generators">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators"></a><a class="link" href="primitive_generators.html" title="Karma Generators">
+        Karma Generators</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="primitive_generators/char.html">
+          Character Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/string.html">
+          String Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/real_number.html">
+          Real Number Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/signed_int.html">
+          Integer Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/unsigned_int.html">
+          Unsigned Integer Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/stream.html">
+          Stream Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/binary.html">
+          Binary Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/auxiliary.html">
+          Auxiliary Generators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/operators.html">
+          Generator Operators</a></span></dt>
+<dt><span class="section"><a href="primitive_generators/directives.html">
+          Generator Directives</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitive_generators/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,184 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Auxiliary Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="binary.html" title="Binary Generators">
+<link rel="next" href="operators.html" title="Generator Operators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operators.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Auxiliary Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.auxiliary"></a><a class="link" href="auxiliary.html" title="Auxiliary Generators">
+          Auxiliary Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/auxiliary.html" title="Auxiliary">Auxiliary
+            Generators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/eol.html" title="End of Line (eol)"><code class="computeroutput"><span class="identifier">eol</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the end of line (<code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code>)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an empty string
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If <code class="computeroutput"><span class="identifier">b</span></code> is true,
+                    generate an empty string
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Attribute of <code class="computeroutput"><span class="identifier">G</span></code>
+                    where <code class="computeroutput"><span class="identifier">G</span></code> is the
+                    return type of <code class="computeroutput"><span class="identifier">fg</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Invoke <code class="computeroutput"><span class="identifier">fg</span></code> at
+                    generation time, returning a generator <code class="computeroutput"><span class="identifier">g</span></code>
+                    which is then called to generate.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">fg</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    see <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
+                    above
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Equivalent to <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Attribute of <code class="computeroutput"><span class="identifier">g</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call semantic action <code class="computeroutput"><span class="identifier">fa</span></code>
+                    (before executing <code class="computeroutput"><span class="identifier">g</span></code>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operators.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,263 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="stream.html" title="Stream Generators">
+<link rel="next" href="auxiliary.html" title="Auxiliary Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.binary"></a><a class="link" href="binary.html" title="Binary Generators">
+          Binary Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/binary.html" title="Binary">Binary
+            Generators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">byte_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    8 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates an 8 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">word</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 16 bit binary in native endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_word</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 16 bit binary in big endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_word</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 16 bit binary in little endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">dword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 32 bit binary in native endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_dword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 32 bit binary in big endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_dword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 32 bit binary in little endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">qword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 64 bit binary in native endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_qword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 64 bit binary in big endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_qword</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a 64 bit binary in little endian representation
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">pad</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate additional null bytes allowing to align generated output
+                    with memory addresses divisible by <code class="computeroutput"><span class="identifier">num</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,431 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Character Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="../primitive_generators.html" title="Karma Generators">
+<link rel="next" href="string.html" title="String Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Character Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.char"></a><a class="link" href="char.html" title="Character Generators">
+          Character Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/char.html" title="Char">Character
+            Generators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">ch</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates character supplied as the attribute
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">ch</span></code>,
+                    if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"c"</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a single char string literal, <code class="computeroutput"><span class="identifier">c</span></code>,
+                    if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">,</span>
+                    <span class="identifier">ch2</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a single char string literal, <code class="computeroutput"><span class="identifier">c</span></code>,
+                    if <code class="computeroutput"><span class="identifier">c</span></code> belongs
+                    to the chracter range from <code class="computeroutput"><span class="identifier">ch</span></code>
+                    to <code class="computeroutput"><span class="identifier">ch2</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">charset</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates a single char string literal, <code class="computeroutput"><span class="identifier">c</span></code>,
+                    if <code class="computeroutput"><span class="identifier">c</span></code> belongs
+                    to the chracter set <code class="computeroutput"><span class="identifier">charset</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">alnum</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalnum</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">alpha</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalpha</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">blank</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isblank</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">cntrl</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iscntrl</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">digit</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isdigit</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">graph</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isgraph</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">print</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isprint</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">punct</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ispunct</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">space</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isspace</span></code>,
+                    or a single space character in the character set defined by
+                    <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">xdigit</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isxdigit</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">lower</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">islower</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/char/char_class.html" title="Character Classification (alnum, digit, etc.)"><code class="computeroutput"><span class="identifier">upper</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates the character supplied as the attribute if it satisfies
+                    the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isupper</span></code>
+                    in the character set defined by <code class="computeroutput"><span class="identifier">NS</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,478 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generator Directives</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="operators.html" title="Generator Operators">
+<link rel="next" href="../compound_attribute_rules.html" title="Compound Attribute Rules">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../compound_attribute_rules.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Generator Directives">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.directives"></a><a class="link" href="directives.html" title="Generator Directives">
+          Generator Directives</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/directive.html" title="Directive">Generator
+            Directives</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])"><code class="computeroutput"><span class="identifier">lower</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> as
+                    lower case
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])"><code class="computeroutput"><span class="identifier">upper</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> as
+                    upper case
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">left_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in column of width <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">g</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                    while using <code class="computeroutput"><span class="identifier">g</span></code>
+                    to generate the necesssary padding
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">center</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in column of width <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">g</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                    while using <code class="computeroutput"><span class="identifier">g</span></code>
+                    to generate the necesssary padding
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">right_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in column of width <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">g</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                    while using <code class="computeroutput"><span class="identifier">g</span></code>
+                    to generate the necesssary padding
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])"><code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> truncated
+                    to column of width <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])"><code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> truncated
+                    to column of width <code class="computeroutput"><span class="identifier">num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> zero
+                    or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">num</span></code> times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num1</span><span class="special">,</span>
+                    <span class="identifier">num2</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">num1</span></code> to <code class="computeroutput"><span class="identifier">num2</span></code>
+                    times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">num</span></code> or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"><code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Disable delimited generation for <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"><code class="computeroutput"><span class="identifier">delimit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Reestablish the delimiter that got inhibited by verbatim
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"><code class="computeroutput"><span class="identifier">delimit</span><span class="special">(</span><span class="identifier">d</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Use <code class="computeroutput"><span class="identifier">d</span></code> as a delimiter
+                    for generating <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/omit.html" title="Consume Attribute (omit[])"><code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Consumes the attribute type of <code class="computeroutput"><span class="identifier">a</span></code>
+                    without generating anything
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Temporarily intercepts the output generated by <code class="computeroutput"><span class="identifier">a</span></code>, flushing it only after
+                    <code class="computeroutput"><span class="identifier">a</span></code> succeeded.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../compound_attribute_rules.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,236 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generator Operators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="auxiliary.html" title="Auxiliary Generators">
+<link rel="next" href="directives.html" title="Generator Directives">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directives.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Generator Operators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.operators"></a><a class="link" href="operators.html" title="Generator Operators">
+          Generator Operators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/operator.html" title="Operator">Generator
+            Operators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/not_predicate.html" title="Not Predicate (!a)"><code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Not predicate. Ensure that <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not succeed generating, but don't create any output
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/not_predicate.html" title="Not Predicate (!a)"><code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    And predicate. Ensure that <code class="computeroutput"><span class="identifier">a</span></code>
+                    does succeed generating, but don't create any output
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/optional.html" title="Optional (-a)"><code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Optional. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    zero or one time
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/kleene.html" title="Kleene Star (*a)"><code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Kleene. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    zero or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/plus.html" title="Plus (+a)"><code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Plus. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    one or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/alternative.html" title="Alternative (a | b)"><code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Alternative. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    or <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/sequence.html" title="Sequences (a << b)"><code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+                    <span class="identifier">b</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Sequence. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    followed by <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/operator/list.html" title="Lists (a % b)"><code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+                    <span class="identifier">b</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    List. Generate <code class="computeroutput"><span class="identifier">a</span></code>
+                    delimited <code class="computeroutput"><span class="identifier">b</span></code> one
+                    or more times
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                For more information about the attribute propagation rules implemented
+                by the compound generators please see <a class="link" href="../compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+                Attribute Rules</a>.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directives.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,248 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Real Number Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="string.html" title="String Generators">
+<link rel="next" href="signed_int.html" title="Integer Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signed_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Real Number Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.real_number"></a><a class="link" href="real_number.html" title="Real Number Generators">
+          Real Number Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/numeric.html" title="Numeric">Numeric
+            Generators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric.html" title="Numeric"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">float_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">float</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a real number from a <code class="computeroutput"><span class="keyword">float</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">float_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">float</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a real number from a <code class="computeroutput"><span class="keyword">float</span></code>,
+                    if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">double_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a real number from a <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a real number from a <code class="computeroutput"><span class="keyword">double</span></code>,
+                    if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">long_double</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a real number from a <code class="computeroutput"><span class="keyword">long</span>
+                    <span class="keyword">double</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)"><code class="computeroutput"><span class="identifier">long_double</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a real number from a <code class="computeroutput"><span class="keyword">long</span>
+                    <span class="keyword">double</span></code>, if an attribute
+                    is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">real_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Policies</span>
+<span class="special">>()</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a real number <code class="computeroutput"><span class="identifier">Num</span></code>
+                    using the supplied real number formatting policies
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">real_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Policies</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate real number <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a <code class="computeroutput"><span class="identifier">Num</span></code> using
+                    the supplied real number formatting policies, if an attribute
+                    is supplied it must match
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signed_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,255 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Integer Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="real_number.html" title="Real Number Generators">
+<link rel="next" href="unsigned_int.html" title="Unsigned Integer Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="real_number.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Integer Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.signed_int"></a><a class="link" href="signed_int.html" title="Integer Generators">
+          Integer Generators</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">short_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a short integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">short_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a short integer, if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">int_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an int
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">int_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an int, if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">long_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a long integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">long_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as long integer, if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">long_long</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a long long
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">long_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an long long, if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a <code class="computeroutput"><span class="identifier">Num</span></code>, if
+                    an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="real_number.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,194 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Stream Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="unsigned_int.html" title="Unsigned Integer Generators">
+<link rel="next" href="binary.html" title="Binary Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Stream Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.stream"></a><a class="link" href="stream.html" title="Stream Generators">
+          Stream Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about <a class="link" href="../../reference/stream.html" title="Stream">Stream
+            Generators</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream"><code class="computeroutput"><span class="identifier">stream</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates narrow character (<code class="computeroutput"><span class="keyword">char</span></code>)
+                    based output using the matching streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream"><code class="computeroutput"><span class="identifier">stream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates narrow character (<code class="computeroutput"><span class="keyword">char</span></code>)
+                    based output from the immediate argument <code class="computeroutput"><span class="identifier">s</span></code>
+                    using the matching streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream"><code class="computeroutput"><span class="identifier">wstream</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates narrow character (<code class="computeroutput"><span class="keyword">wchar_t</span></code>)
+                    based output using the matching streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream"><code class="computeroutput"><span class="identifier">wstream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates wide character (<code class="computeroutput"><span class="keyword">wchar_t</span></code>)
+                    based output from the immediate argument <code class="computeroutput"><span class="identifier">s</span></code>
+                    using the matching streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">stream_generator</span><span class="special"><</span>
+    <span class="identifier">Char</span>
+<span class="special">>()</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates output based on the given character type (<code class="computeroutput"><span class="identifier">Char</span></code>) using the matching streaming
+                    <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/stream.html" title="Stream">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">stream_generator</span><span class="special"><</span>
+    <span class="identifier">Char</span>
+<span class="special">>()(</span><span class="identifier">s</span><span class="special">)</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates output based on the given character type <code class="computeroutput"><span class="identifier">Char</span></code> from the immediate argument
+                    <code class="computeroutput"><span class="identifier">s</span></code> using the matching
+                    streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,143 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="char.html" title="Character Generators">
+<link rel="next" href="real_number.html" title="Real Number Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real_number.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.string"></a><a class="link" href="string.html" title="String Generators">
+          String Generators</a>
+</h5></div></div></div>
+<p>
+            See here for more information about String Generators .
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string.html" title="String"><code class="computeroutput"><span class="identifier">str</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">str</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string.html" title="String"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">str</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">str</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string.html" title="String"><code class="computeroutput"><span class="identifier">string</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Str</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates string supplied as the attribute
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string.html" title="String"><code class="computeroutput"><span class="identifier">string</span><span class="special">(</span><span class="identifier">str</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Str</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generates <code class="computeroutput"><span class="identifier">str</span></code>,
+                    if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real_number.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,314 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Unsigned Integer Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitive_generators.html" title="Karma Generators">
+<link rel="prev" href="signed_int.html" title="Integer Generators">
+<link rel="next" href="stream.html" title="Stream Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signed_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="stream.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Unsigned Integer Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.unsigned_int"></a><a class="link" href="unsigned_int.html" title="Unsigned Integer Generators">
+          Unsigned Integer Generators</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ushort_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned short integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ushort_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an unsigned short integer, if an attribute is supplied it
+                    must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">uint_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned int
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">uint_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an unsigned int, if an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ulong_</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned long integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ulong_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an unsigned long integer, if an attribute is supplied it must
+                    match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ulong_long</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+                    <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned long long
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+                    <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">num</span></code>
+                    as an unsigned long long, if an attribute is supplied it must
+                    match
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">bin</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a binary integer from an <code class="computeroutput"><span class="keyword">unsigned</span>
+                    <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">oct</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an octal integer from an <code class="computeroutput"><span class="keyword">unsigned</span>
+                    <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"><code class="computeroutput"><span class="identifier">hex</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate a hexadecimal integer from an <code class="computeroutput"><span class="keyword">unsigned</span>
+                    <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)">
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+                    </a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate an unsigned <code class="computeroutput"><span class="identifier">num</span></code>
+                    as a <code class="computeroutput"><span class="identifier">Num</span></code>, if
+                    an attribute is supplied it must match
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signed_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="stream.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="non_terminals.html" title="Non-terminals">
+<link rel="next" href="phoenix.html" title="Phoenix">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_terminals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.semantic_actions"></a><a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic
+        Actions</a>
+</h4></div></div></div>
+<p>
+          Has the form:
+        </p>
+<pre class="programlisting"><span class="identifier">g</span><span class="special">[</span><span class="identifier">f</span><span class="special">]</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">f</span></code> is a function with
+          the signatures:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="keyword">bool</span><span class="special">&);</span>
+</pre>
+<p>
+          You can use <code class="computeroutput">Boost.Bind</code>
+          to bind member functions. For function objects, the allowed signatures
+          are:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="keyword">bool</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+          The <code class="computeroutput"><span class="identifier">unused_type</span></code> is used
+          in the signatures above to signify 'don't care'.
+        </p>
+<p>
+          For more information see <a class="link" href="../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
+          Actions</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_terminals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../karma.html" title="Karma - Writing Generators">
+<link rel="prev" href="quick_reference/phoenix.html" title="Phoenix">
+<link rel="next" href="reference/generator_concepts.html" title="Generator Concepts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/generator_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.karma.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="reference/generator_concepts.html">Generator
+        Concepts</a></span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"> Char</span></dt>
+<dt><span class="section">String</span></dt>
+<dt><span class="section"> Numeric</span></dt>
+<dt><span class="section">Stream</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Operator</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/generator_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Auxiliary</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary/binary_big.html" title="Binary Big Endianness Generators">
+<link rel="next" href="auxiliary/eol.html" title="End of Line (eol)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary/binary_big.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary/eol.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Auxiliary">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.auxiliary"></a><a class="link" href="auxiliary.html" title="Auxiliary">Auxiliary</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="auxiliary/eol.html"> End of Line
+          (<code class="computeroutput"><span class="identifier">eol</span></code>)</a></span></dt>
+<dt><span class="section"> Epsilon (eps)</span></dt>
+<dt><span class="section"> Lazy (lazy)</span></dt>
+</dl></div>
+<p>
+          This module includes different auxiliary generators not fitting into any
+          of the other categories. It includes the <code class="computeroutput"><span class="identifier">eol</span></code>
+          and <code class="computeroutput"><span class="identifier">eps</span></code>, <code class="computeroutput"><span class="identifier">lazy</span></code> generators.
+        </p>
+<a name="spirit.karma.reference.auxiliary.module_header"></a><h6>
+<a name="id797514"></a>
+          <a class="link" href="auxiliary.html#spirit.karma.reference.auxiliary.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_auxiliary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary/binary_big.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary/eol.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,265 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>End of Line (eol)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="../auxiliary.html" title="Auxiliary">
+<link rel="next" href="eps.html" title="Epsilon (eps)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eps.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="End of Line (eol)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.auxiliary.eol"></a><a class="link" href="eol.html" title="End of Line (eol)"> End of Line
+          (<code class="computeroutput"><span class="identifier">eol</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.auxiliary.eol.description"></a><h6>
+<a name="id797605"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">eol</span></code> component generates
+            a single newline character. It is equivalent to <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="char">'\n'</span><span class="special">)</span></code>
+            or simply '\n' (please see the <a class="link" href="../char/char_generator.html" title="Character Generators (char_, lit)"><code class="computeroutput"><span class="identifier">char_</span></code></a> generator module for more
+            details).
+          </p>
+<a name="spirit.karma.reference.auxiliary.eol.header"></a><h6>
+<a name="id797658"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/eol.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_eol</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eol.namespace"></a><h6>
+<a name="id797732"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">eol</span> <span class="comment">// alias:
+                    boost::spirit::karma::eol</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eol.model_of"></a><h6>
+<a name="id797810"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.auxiliary.eol.expression_semantics"></a><h6>
+<a name="id797849"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eol</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a component generating a single end of line character
+                    in the output. This generator never fails (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eol.attributes"></a><h6>
+<a name="id797938"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eol</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eol.complexity"></a><h6>
+<a name="id798016"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The complexity is constant as a single character is generated in the
+            output.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eol.example"></a><h6>
+<a name="id798043"></a>
+            <a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">eol</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the <code class="computeroutput"><span class="identifier">eol</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"\n"</span><span class="special">,</span> <span class="identifier">eol</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc\n"</span><span class="special">,</span> <span class="string">"abc"</span> <span class="special"><<</span> <span class="identifier">eol</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eps.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,384 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Epsilon (eps)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="eol.html" title="End of Line (eol)">
+<link rel="next" href="lazy.html" title="Lazy (lazy)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eol.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lazy.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Epsilon (eps)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.auxiliary.eps"></a><a class="link" href="eps.html" title="Epsilon (eps)"> Epsilon (<code class="computeroutput"><span class="identifier">eps</span></code>)</a>
+</h5></div></div></div>
+<p>
+            The family of <code class="computeroutput"><span class="identifier">eps</span></code> components
+            allows to create pseudo generators generating an empty string. This feature
+            is sometimes useful either to force a generator to fail or to succeed
+            or to insert semantic actions into the generation process.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eps.description"></a><h6>
+<a name="id798816"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.description">Description</a>
+          </h6>
+<p>
+            The Epsilon (<code class="computeroutput"><span class="identifier">eps</span></code>) is
+            a multi-purpose generator that emits a yero length string.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eps.simple_form"></a><h6>
+<a name="id798840"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.simple_form">Simple
+            Form</a>
+          </h6>
+<p>
+            In its simplest form, <code class="computeroutput"><span class="identifier">eps</span></code>
+            creates a component generating an empty string while always succeeding:
+          </p>
+<pre class="programlisting"><span class="identifier">eps</span>       <span class="comment">// always emits a zero-length string
+</span></pre>
+<p>
+            This form is usually used to trigger a semantic action unconditionally.
+            For example, it is useful in triggering error messages when a set of
+            alternatives fail:
+          </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">c</span> <span class="special">|</span> <span class="identifier">eps</span><span class="special">[</span><span class="identifier">error</span><span class="special">()];</span> <span class="comment">// Call error if a, b, and c fail to generate
+</span></pre>
+<a name="spirit.karma.reference.auxiliary.eps.semantic_predicate"></a><h6>
+<a name="id798941"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.semantic_predicate">Semantic
+            Predicate</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+            component generates an empty string as well, but succeeds only if <code class="computeroutput"><span class="identifier">b</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
+            and fails otherwise. It's lazy variant <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">fb</span><span class="special">)</span></code> is equivalent to <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code> except it evaluates the supplied function
+            <code class="computeroutput"><span class="identifier">fb</span></code> at generate time,
+            while using the return value as the criteria to succeed.
+          </p>
+<p>
+            Semantic predicates allow you to attach a conditional function anywhere
+            in the grammar. In this role, the epsilon takes a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+            Argument</a> that returns <code class="computeroutput"><span class="keyword">true</span></code>
+            or <code class="computeroutput"><span class="keyword">false</span></code>. The <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+            Argument</a> is typically a test that is called to resolve ambiguity
+            in the grammar. A generator failure will be reported when the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+            Argument</a> result evaluates to <code class="computeroutput"><span class="keyword">false</span></code>.
+            Otherwise an empty string will be emitted. The general form is:
+          </p>
+<pre class="programlisting"><span class="identifier">eps_p</span><span class="special">(</span><span class="identifier">fb</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">rest</span><span class="special">;</span>
+</pre>
+<p>
+            The <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+            Argument</a> <code class="computeroutput"><span class="identifier">fb</span></code> is
+            called to do a semantic test. If the test returns true, <code class="computeroutput"><span class="identifier">rest</span></code> will be evaluated. Otherwise,
+            the production will return early without ever touching rest.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eps.header"></a><h6>
+<a name="id799128"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/eps.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_eps</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eps.namespace"></a><h6>
+<a name="id799202"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">eps</span> <span class="comment">// alias:
+                    boost::spirit::karma::eps</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eps.model_of"></a><h6>
+<a name="id799280"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A boolean value.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fb</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a boolean value.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.auxiliary.eps.expression_semantics"></a><h6>
+<a name="id799367"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Creates a component generating an empty string. Succeeds always.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Creates a component generating an empty string. Succeeds if
+                    <code class="computeroutput"><span class="identifier">b</span></code> is <code class="computeroutput"><span class="keyword">true</span></code> (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">fb</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Creates a component generating an empty string. Succeeds if
+                    <code class="computeroutput"><span class="identifier">fb</span></code> returns <code class="computeroutput"><span class="keyword">true</span></code> at generate time (except
+                    if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eps.attributes"></a><h6>
+<a name="id799554"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">fb</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.eps.complexity"></a><h6>
+<a name="id799716"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The complexity is constant as no output is generated.
+          </p>
+<a name="spirit.karma.reference.auxiliary.eps.example"></a><h6>
+<a name="id799744"></a>
+            <a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">eps</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the <code class="computeroutput"><span class="identifier">eps</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">[</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"starting eps example"</span><span class="special">]</span> <span class="special"><<</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">(</span><span class="keyword">true</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">(</span><span class="keyword">false</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span><span class="special">);</span>      <span class="comment">// fails as eps expression is 'false'
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eol.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lazy.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,347 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lazy (lazy)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="eps.html" title="Epsilon (eps)">
+<link rel="next" href="../directive.html" title="Directive">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eps.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lazy (lazy)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.auxiliary.lazy"></a><a class="link" href="lazy.html" title="Lazy (lazy)"> Lazy (<code class="computeroutput"><span class="identifier">lazy</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.auxiliary.lazy.description"></a><h6>
+<a name="id800590"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.description">Description</a>
+          </h6>
+<p>
+            The familiy of <code class="computeroutput"><span class="identifier">lazy</span></code> components
+            allows to use a dynamically returned generator component for output generation.
+            It calls the provided function or function object at generate time using
+            its return value as the actual generator to produce the output.
+          </p>
+<a name="spirit.karma.reference.auxiliary.lazy.header"></a><h6>
+<a name="id800614"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/lazy.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_lazy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.auxiliary.lazy.namespace"></a><h6>
+<a name="id800688"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lazy</span> <span class="comment">// alias:
+                    boost::spirit::karma::lazy</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.lazy.model_of"></a><h6>
+<a name="id800767"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fg</span></code></span></dt>
+<dd><p>
+                A function or function object that evaluates to a generator object
+                (an object exposing the <a class="link" href="../generator_concepts/generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>). This function
+                will be invoked at generate time.
+              </p></dd>
+</dl>
+</div>
+<p>
+            The signature of <code class="computeroutput"><span class="identifier">fg</span></code> is
+            expected to be
+          </p>
+<pre class="programlisting"><span class="identifier">G</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span>
+</pre>
+<p>
+            where <code class="computeroutput"><span class="identifier">G</span></code>, the function's
+            return value, is the type of the generator to be invoked, and <code class="computeroutput"><span class="identifier">Context</span></code> is the generators's Context
+            type (The first argument is <code class="computeroutput"><span class="identifier">unused</span></code>
+            to make the <code class="computeroutput"><span class="identifier">Context</span></code> the
+            second argument. This is done for uniformity with <a class="link" href="../../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
+            Actions</a>).
+          </p>
+<a name="spirit.karma.reference.auxiliary.lazy.expression_semantics"></a><h6>
+<a name="id800918"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">fg</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The Boost.Phoenix
+                    function object <code class="computeroutput"><span class="identifier">fg</span></code>
+                    will be invoked at generate time. It is expected to return a
+                    generator instance. This generator is then invoked in order to
+                    generate the output. This generator will succeed as long as the
+                    invoked generated succeeds as well (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The function or function object will be invoked at generate time.
+                    It is expected to return a generator instance (note this version
+                    of <code class="computeroutput"><span class="identifier">lazy</span></code> does
+                    not require <code class="computeroutput"><span class="identifier">fg</span></code>
+                    to be a Boost.Phoenix
+                    function object). This generator is then invoked in order to
+                    generate the output. This generator will succeed as long as the
+                    invoked generated succeeds as well (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.lazy.attributes"></a><h6>
+<a name="id802446"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">fg</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The attribute type <code class="computeroutput"><span class="identifier">G</span></code>
+                    as exposed by the generator <code class="computeroutput"><span class="identifier">g</span></code>
+                    returned from <code class="computeroutput"><span class="identifier">fg</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The attribute type <code class="computeroutput"><span class="identifier">G</span></code>
+                    as exposed by the generator <code class="computeroutput"><span class="identifier">g</span></code>
+                    returned from <code class="computeroutput"><span class="identifier">fg</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.auxiliary.lazy.complexity"></a><h6>
+<a name="id802595"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.complexity">Complexity</a>
+          </h6>
+<p>
+            The complexity of the <code class="computeroutput"><span class="identifier">lazy</span></code>
+            component is determined by the complexity of the generator returned from
+            <code class="computeroutput"><span class="identifier">fg</span></code>.
+          </p>
+<a name="spirit.karma.reference.auxiliary.lazy.example"></a><h6>
+<a name="id802626"></a>
+            <a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">lazy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the <code class="computeroutput"><span class="identifier">lazy</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">lazy</span><span class="special">(</span><span class="identifier">val</span><span class="special">(</span><span class="identifier">string</span><span class="special">)),</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">lazy</span><span class="special">(</span><span class="identifier">val</span><span class="special">(</span><span class="identifier">string</span><span class="special">))[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="string">"abc"</span><span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eps.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="stream/stream.html" title="Stream (stream, wstream, etc.)">
+<link rel="next" href="binary/binary_native.html" title="Binary Native Endianness Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream/stream.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary/binary_native.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.binary"></a><a class="link" href="binary.html" title="Binary"> Binary</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="binary/binary_native.html"> Binary
+          Native Endianness Generators</a></span></dt>
+<dt><span class="section"><a href="binary/binary_little.html"> Binary
+          Little Endianness Generators</a></span></dt>
+<dt><span class="section"><a href="binary/binary_big.html"> Binary
+          Big Endianness Generators</a></span></dt>
+</dl></div>
+<p>
+          This module includes different generators allowing to output binary data.
+          It includes generators for default, little, and big endian binary output
+          and a <code class="computeroutput"><span class="identifier">pad</span></code> generator allowing
+          to control padding of the generated output stream.
+        </p>
+<a name="spirit.karma.reference.binary.module_header"></a><h6>
+<a name="id785226"></a>
+          <a class="link" href="binary.html#spirit.karma.reference.binary.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="stream/stream.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary/binary_native.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,476 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Big Endianness Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="binary_little.html" title="Binary Little Endianness Generators">
+<link rel="next" href="../auxiliary.html" title="Auxiliary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_little.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Big Endianness Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.binary.binary_big"></a><a class="link" href="binary_big.html" title="Binary Big Endianness Generators"> Binary
+          Big Endianness Generators</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.binary.binary_big.description"></a><h6>
+<a name="id792396"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.description">Description</a>
+          </h6>
+<p>
+            The big native endianness generators described in this section are used
+            to emit binary byte streams layed out conforming to the big endianess
+            byte order.
+          </p>
+<a name="spirit.karma.reference.binary.binary_big.header"></a><h6>
+<a name="id792412"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.binary.binary_big.namespace"></a><h6>
+<a name="id792487"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_word</span> <span class="comment">//
+                    alias: boost::spirit::karma::big_word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_dword</span> <span class="comment">//
+                    alias: boost::spirit::karma::big_dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_qword</span> <span class="comment">//
+                    alias: boost::spirit::karma::big_qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">big_qword</span></code>
+              and <code class="computeroutput"><span class="identifier">big_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+              are only available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_big.model_of"></a><h6>
+<a name="id792699"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.binary.binary_big.expression_semantics"></a><h6>
+<a name="id792813"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the mandatory attribute in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the mandatory attribute in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the mandatory attribute in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the immediate parameter in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the immediate parameter in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the immediate parameter in big endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_big.attributes"></a><h6>
+<a name="id793054"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_big.complexity"></a><h6>
+<a name="id793342"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes emitted by the binary generator
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.binary.binary_big.example"></a><h6>
+<a name="id793366"></a>
+            <a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the big binary generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x02\x01"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">big_word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">big_dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x08\x07\x06\x05\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">big_qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x02\x01"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">big_word</span><span class="special">,</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">big_dword</span><span class="special">,</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x08\x07\x06\x05\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">big_qword</span><span class="special">,</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_little.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,476 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Little Endianness Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="binary_native.html" title="Binary Native Endianness Generators">
+<link rel="next" href="binary_big.html" title="Binary Big Endianness Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_native.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_big.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Little Endianness Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.binary.binary_little"></a><a class="link" href="binary_little.html" title="Binary Little Endianness Generators"> Binary
+          Little Endianness Generators</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.binary.binary_little.description"></a><h6>
+<a name="id789922"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.description">Description</a>
+          </h6>
+<p>
+            The little native endianness generators described in this section are
+            used to emit binary byte streams layed out conforming to the little endianess
+            byte order.
+          </p>
+<a name="spirit.karma.reference.binary.binary_little.header"></a><h6>
+<a name="id789939"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.binary.binary_little.namespace"></a><h6>
+<a name="id790013"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_word</span> <span class="comment">//
+                    alias: boost::spirit::karma::little_word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_dword</span> <span class="comment">//
+                    alias: boost::spirit::karma::little_dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_qword</span> <span class="comment">//
+                    alias: boost::spirit::karma::little_qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">little_qword</span></code>
+              and <code class="computeroutput"><span class="identifier">little_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+              are only available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_little.model_of"></a><h6>
+<a name="id790223"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.binary.binary_little.expression_semantics"></a><h6>
+<a name="id790335"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the mandatory attribute in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the mandatory attribute in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the mandatory attribute in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the immediate parameter in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the immediate parameter in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the immediate parameter in little endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_little.attributes"></a><h6>
+<a name="id790574"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_little.complexity"></a><h6>
+<a name="id790862"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes emitted by the binary generator
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.binary.binary_little.example"></a><h6>
+<a name="id790886"></a>
+            <a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the little binary generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">little_word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">little_dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">little_qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">little_word</span><span class="special">,</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">little_dword</span><span class="special">,</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">little_qword</span><span class="special">,</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_native.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_big.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,566 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Native Endianness Generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="../binary.html" title="Binary">
+<link rel="next" href="binary_little.html" title="Binary Little Endianness Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_little.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Native Endianness Generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.binary.binary_native"></a><a class="link" href="binary_native.html" title="Binary Native Endianness Generators"> Binary
+          Native Endianness Generators</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.binary.binary_native.description"></a><h6>
+<a name="id785310"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.description">Description</a>
+          </h6>
+<p>
+            The binary native endianness generators described in this section are
+            used to emit binary byte streams layed out conforming to the native endianess
+            (byte order) of the target architecture.
+          </p>
+<a name="spirit.karma.reference.binary.binary_native.header"></a><h6>
+<a name="id785326"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.binary.binary_native.namespace"></a><h6>
+<a name="id785401"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">byte_</span> <span class="comment">// alias:
+                    boost::spirit::karma::byte_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">word</span> <span class="comment">// alias:
+                    boost::spirit::karma::word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">dword</span> <span class="comment">// alias:
+                    boost::spirit::karma::dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qword</span> <span class="comment">// alias:
+                    boost::spirit::karma::qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">qword</span></code>
+              and <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+              are only available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_native.model_of"></a><h6>
+<a name="id786744"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A single byte (8 bit binary value) or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a single byte
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always interpreted using native endianness.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.binary.binary_native.expression_semantics"></a><h6>
+<a name="id786880"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant byte
+                    of the mandatory attribute. This generator never fails (except
+                    if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the mandatory attribute in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the mandatory attribute in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the mandatory attribute in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant byte
+                    of the immediate parameter. This generator never fails (except
+                    if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 16
+                    bits of the immediate parameter in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 32
+                    bits of the immediate parameter in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Output the binary representation of the least significant 64
+                    bits of the immediate parameter in native endian representation.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_native.attributes"></a><h6>
+<a name="id787178"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least8_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.binary.binary_native.complexity"></a><h6>
+<a name="id787546"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes emitted by the binary generator
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.binary.binary_native.example"></a><h6>
+<a name="id787570"></a>
+            <a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">memcmp</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">(),</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">size</span><span class="special">))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the native binary generators with some results for little
+            endian platforms:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="number">0x01</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the native binary generators with some results for big
+            endian platforms:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x02\x01"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_binary_generator</span><span class="special">(</span><span class="string">"\x08\x07\x06\x05\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="number">0x01</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x02\x01"</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">4</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_binary_generator_attr</span><span class="special">(</span><span class="string">"\x08\x07\x06\x05\x04\x03\x02\x01"</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_little.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,69 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Char</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="karma_basics.html" title="Basics">
+<link rel="next" href="char/char_generator.html" title="Character Generators (char_, lit)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char/char_generator.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Char">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.char"></a><a class="link" href="char.html" title="Char"> Char</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="char/char_generator.html"> Character
+          Generators (<code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a></span></dt>
+<dt><span class="section"><a href="char/char_class.html"> Character
+          Classification (<code class="computeroutput"><span class="identifier">alnum</span></code>,
+          <code class="computeroutput"><span class="identifier">digit</span></code>, etc.)</a></span></dt>
+</dl></div>
+<p>
+          This module includes different character oriented generators allowing to
+          output single characters. Currently, it includes literal chars (e.g. <code class="computeroutput"><span class="char">'x'</span></code>, <code class="computeroutput"><span class="identifier">L</span><span class="char">'x'</span></code>), <code class="computeroutput"><span class="identifier">char_</span></code>
+          (single characters, ranges and character sets) and the encoding specific
+          character classifiers (<code class="computeroutput"><span class="identifier">alnum</span></code>,
+          <code class="computeroutput"><span class="identifier">alpha</span></code>, <code class="computeroutput"><span class="identifier">digit</span></code>,
+          <code class="computeroutput"><span class="identifier">xdigit</span></code>, etc.).
+        </p>
+<a name="spirit.karma.reference.char.module_header"></a><h6>
+<a name="id748436"></a>
+          <a class="link" href="char.html#spirit.karma.reference.char.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char/char_generator.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,536 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Character Classification (alnum, digit, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../char.html" title="Char">
+<link rel="prev" href="char_generator.html" title="Character Generators (char_, lit)">
+<link rel="next" href="../string.html" title="String">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char_generator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Character Classification (alnum, digit, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.char.char_class"></a><a class="link" href="char_class.html" title="Character Classification (alnum, digit, etc.)"> Character
+          Classification (<code class="computeroutput"><span class="identifier">alnum</span></code>,
+          <code class="computeroutput"><span class="identifier">digit</span></code>, etc.)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.char.char_class.description"></a><h6>
+<a name="id754305"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.description">Description</a>
+          </h6>
+<p>
+            The library has the full repertoire of single character generators for
+            character classification. This includes the usual <code class="computeroutput"><span class="identifier">alnum</span></code>,
+            <code class="computeroutput"><span class="identifier">alpha</span></code>, <code class="computeroutput"><span class="identifier">digit</span></code>, <code class="computeroutput"><span class="identifier">xdigit</span></code>,
+            etc. generators. These generators have an associated <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as forcing lower or upper case.
+          </p>
+<a name="spirit.karma.reference.char.char_class.header"></a><h6>
+<a name="id754356"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char/char_class.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_char_class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.char.char_class.namespace"></a><h6>
+<a name="id754430"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alnum</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alpha</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">blank</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">cntrl</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">digit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">graph</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">print</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">punct</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">space</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">xdigit</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a> used by the corresponding character class generator.
+            All listed generators have a mandatory attribute <code class="computeroutput"><span class="identifier">Ch</span></code>
+            and will not compile if no attribute is associated.
+          </p>
+<a name="spirit.karma.reference.char.char_class.model_of"></a><h6>
+<a name="id754796"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.char.char_class.expression_semantics"></a><h6>
+<a name="id754864"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alnum</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalnum</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alpha</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalpha</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">blank</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isblank</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">cntrl</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iscntrl</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">digit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isdigit</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">graph</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isgraph</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">print</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isprint</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">punct</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ispunct</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">xdigit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isxdigit</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">islower</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the mandatory attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isupper</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">space</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the optional attribute satisfies the concept of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isspace</span></code> in the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a> the generator succeeds after emitting
+                    its attribute (except if the underlying output stream reports
+                    an error). This generator fails otherwise while not generating
+                    anything.If no attribute is supplied this generator emits a single
+                    space character in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            Possible values for <code class="computeroutput"><span class="identifier">ns</span></code>
+            are described in the section <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The generators <code class="computeroutput"><span class="identifier">alpha</span></code>
+              and <code class="computeroutput"><span class="identifier">alnum</span></code> might seem
+              to behave unexpected if used inside a <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code> or <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code> directive. Both directives additionally
+              apply the semanitics of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">islower</span></code>
+              or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isupper</span></code> to the respective character
+              class. Some examples: 
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">lower</span><span class="special">[</span><span class="identifier">alpha</span><span class="special">],</span> <span class="char">'a'</span><span class="special">);</span>               <span class="comment">// succeeds emitting 'a'
+</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">lower</span><span class="special">[</span><span class="identifier">alpha</span><span class="special">],</span> <span class="char">'A'</span><span class="special">);</span>               <span class="comment">// fails 
+</span></pre>
+<p>
+              The generator directive <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code> behaves correspondingly.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.char.char_class.attributes"></a><h6>
+<a name="id757055"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.attributes">Attributes</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                All listed character class generators can take any attribute <code class="computeroutput"><span class="identifier">Ch</span></code>. All character class generators
+                (except <code class="computeroutput"><span class="identifier">space</span></code>) require
+                an attribute and will fail compiling otherwise.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.char.char_class.complexity"></a><h6>
+<a name="id757095"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The complexity is constant as the generators emit not more than one character
+            per invocation.
+          </p>
+<a name="spirit.karma.reference.char.char_class.example"></a><h6>
+<a name="id757122"></a>
+            <a class="link" href="char_class.html#spirit.karma.reference.char.char_class.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">alpha</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an <code class="computeroutput"><span class="identifier">alpha</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="char">'a'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="char">'A'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">alpha</span><span class="special">,</span> <span class="char">'1'</span><span class="special">);</span>          <span class="comment">// fails (as isalpha('1') is false)
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">upper</span><span class="special">[</span><span class="identifier">alpha</span><span class="special">],</span> <span class="char">'a'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">upper</span><span class="special">[</span><span class="identifier">alpha</span><span class="special">],</span> <span class="char">'a'</span><span class="special">);</span>   <span class="comment">// fails (as isupper('a') is false)
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char_generator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,815 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Character Generators (char_, lit)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../char.html" title="Char">
+<link rel="prev" href="../char.html" title="Char">
+<link rel="next" href="char_class.html" title="Character Classification (alnum, digit, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char_class.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Character Generators (char_, lit)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.char.char_generator"></a><a class="link" href="char_generator.html" title="Character Generators (char_, lit)"> Character
+          Generators (<code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.char.char_generator.description"></a><h6>
+<a name="id748534"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.description">Description</a>
+          </h6>
+<p>
+            The character generators described in this section are:
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">char_</span></code> generator emits
+            single characters. The <code class="computeroutput"><span class="identifier">char_</span></code>
+            generator has an associated <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as forcing lower or upper case and dealing with character ranges.
+          </p>
+<p>
+            There are various forms of <code class="computeroutput"><span class="identifier">char_</span></code>.
+          </p>
+<a name="spirit.karma.reference.char.char_generator.char_"></a><h6>
+<a name="id748584"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char_">char_</a>
+          </h6>
+<p>
+            The no argument form of <code class="computeroutput"><span class="identifier">char_</span></code>
+            emits any character in the associated <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span>               <span class="comment">// emits any character as supplied by the attribute
+</span></pre>
+<a name="spirit.karma.reference.char.char_generator.char__ch_"></a><h6>
+<a name="id748625"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__ch_">char_(ch)</a>
+          </h6>
+<p>
+            The single argument form of <code class="computeroutput"><span class="identifier">char_</span></code>
+            (with a character argument) emits the supplied character.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">)</span>          <span class="comment">// emits 'x'
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">L</span><span class="char">'x'</span><span class="special">)</span>         <span class="comment">// emits L'x'
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span>            <span class="comment">// emits x (a char)
+</span></pre>
+<a name="spirit.karma.reference.char.char_generator.char__first__last_"></a><h6>
+<a name="id748716"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__first__last_">char_(first,
+            last)</a>
+          </h6>
+<p>
+            <code class="computeroutput"><span class="identifier">char_</span></code> with two arguments,
+            emits any character from a range of characters as supplied by the attribute.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">,</span><span class="char">'z'</span><span class="special">)</span>      <span class="comment">// alphabetic characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">L</span><span class="char">'0'</span><span class="special">,</span><span class="identifier">L</span><span class="char">'9'</span><span class="special">)</span>    <span class="comment">// digits
+</span></pre>
+<p>
+            A range of characters is created from a low-high character pair. Such
+            a generator emits a single character that is in the range, including
+            both endpoints. Note, the first character must be <span class="emphasis"><em>before</em></span>
+            the second, according to the underlying <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<p>
+            Character mapping is inherently platform dependent. It is not guaranteed
+            in the standard for example that <code class="computeroutput"><span class="char">'A'</span>
+            <span class="special"><</span> <span class="char">'Z'</span></code>,
+            that is why in Spirit2, we purposely attach a specific <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a> (such as ASCII, ISO-8859-1) to the <code class="computeroutput"><span class="identifier">char_</span></code> generator to eliminate such ambiguities.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              <span class="bold"><strong>Sparse bit vectors</strong></span>
+            </p>
+<p>
+              To accomodate 16/32 and 64 bit characters, the char-set statically
+              switches from a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bitset</span></code>
+              implementation when the character type is not greater than 8 bits,
+              to a sparse bit/boolean set which uses a sorted vector of disjoint
+              ranges (<code class="computeroutput"><span class="identifier">range_run</span></code>).
+              The set is constructed from ranges such that adjacent or overlapping
+              ranges are coalesced.
+            </p>
+<p>
+              <code class="computeroutput"><span class="identifier">range_runs</span></code> are very
+              space-economical in situations where there are lots of ranges and a
+              few individual disjoint values. Searching is O(log n) where n is the
+              number of ranges.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.char.char_generator.char__def_"></a><h6>
+<a name="id748899"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__def_">char_(def)</a>
+          </h6>
+<p>
+            Lastly, when given a string (a plain C string, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>,
+            etc.), the string is regarded as a char-set definition string following
+            a syntax that resembles posix style regular expression character sets
+            (except that double quotes delimit the set elements instead of square
+            brackets and there is no special negation ^ character). Examples:
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-zA-Z"</span><span class="special">)</span>     <span class="comment">// alphabetic characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"0-9a-fA-F"</span><span class="special">)</span>  <span class="comment">// hexadecimal characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"actgACTG"</span><span class="special">)</span>   <span class="comment">// DNA identifiers
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"\x7f\x7e"</span><span class="special">)</span>   <span class="comment">// Hexadecimal 0x7F and 0x7E
+</span></pre>
+<p>
+            These generators emit any character from a range of characters as supplied
+            by the attribute.
+          </p>
+<a name="spirit.karma.reference.char.char_generator.lit_ch_"></a><h6>
+<a name="id750664"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.lit_ch_">lit(ch)</a>
+          </h6>
+<p>
+            <code class="computeroutput"><span class="identifier">lit</span></code>, when passed a single
+            character, behaves like the single argument <code class="computeroutput"><span class="identifier">char_</span></code>
+            except that <code class="computeroutput"><span class="identifier">lit</span></code> does
+            not consume an attribute. A plain <code class="computeroutput"><span class="keyword">char</span></code>
+            or <code class="computeroutput"><span class="keyword">wchar_t</span></code> is equivalent
+            to a <code class="computeroutput"><span class="identifier">lit</span></code>.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">lit</span></code> is reused by the
+              <a class="link" href="../string.html" title="String">String Generators</a>,
+              the char generators, and the Numeric Generators (see <a class="link" href="../numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)">signed
+              integer</a>, <a class="link" href="../numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)">unsigned
+              integer</a>, and <a class="link" href="../numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)">real
+              number</a> generators). In general, a char generator is created
+              when you pass in a character, a string generator is created when you
+              pass in a string, and a numeric generator is created when you use a
+              numeric literal. The exception is when you pass a single element literal
+              string, e.g. <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"x"</span><span class="special">)</span></code>.
+              In this case, we optimize this to create a char generator instead of
+              a string generator.
+            </p></td></tr>
+</table></div>
+<p>
+            Examples:
+          </p>
+<pre class="programlisting"><span class="char">'x'</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="char">'x'</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">L</span><span class="char">'x'</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span>      <span class="comment">// c is a char
+</span></pre>
+<a name="spirit.karma.reference.char.char_generator.header"></a><h6>
+<a name="id750842"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char/char.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_char_</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.char.char_generator.namespace"></a><h6>
+<a name="id750916"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::karma::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.karma.reference.char.char_generator.model_of"></a><h6>
+<a name="id751035"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span></code>,
+            <code class="computeroutput"><span class="identifier">ch1</span></code>, <code class="computeroutput"><span class="identifier">ch2</span></code></span></dt>
+<dd><p>
+                Character-class specific character (See Character Class Types), or
+                a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a character-class specific character
+                value
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cs</span></code></span></dt>
+<dd><p>
+                Character-set specifier string (See Character Class Types), or a
+                <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a character-set specifier string,
+                or a pointer/reference to a null-terminated array of characters.
+                This string specifies a char-set definition string following a syntax
+                that resembles posix style regular expression character sets (except
+                the square brackets and the negation <code class="computeroutput"><span class="special">^</span></code>
+                character).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cg</span></code></span></dt>
+<dd><p>
+                A char generator, a char range generator, or a char set generator.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.char.char_generator.expression_semantics"></a><h6>
+<a name="id751189"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character literal <code class="computeroutput"><span class="identifier">ch</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character literal <code class="computeroutput"><span class="identifier">ch</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character provided by a mandatory attribute interpreted
+                    in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character <code class="computeroutput"><span class="identifier">ch</span></code>
+                    as provided by the immediate literal value the generator is initialized
+                    from. If this generator has an associated attribute it succeeds
+                    only as long as the attribute is equal to the immediate literal
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"c"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character <code class="computeroutput"><span class="identifier">c</span></code>
+                    as provided by the immediate literal value the generator is initialized
+                    from. If this generator has an associated attribute it succeeds
+                    only as long as the attribute is equal to the immediate literal
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch1</span><span class="special">,</span>
+                    <span class="identifier">ch2</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character provided by a mandatory attribute interpreted
+                    in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    The generator succeeds as long as the attribute belongs to the
+                    character range <code class="computeroutput"><span class="special">[</span><span class="identifier">ch1</span><span class="special">,</span>
+                    <span class="identifier">ch2</span><span class="special">]</span></code>
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">cs</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character provided by a mandatory attribute interpreted
+                    in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    The generator succeeds as long as the attribute belongs to the
+                    character set <code class="computeroutput"><span class="identifier">cs</span></code>
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">~</span><span class="identifier">cg</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Negate <code class="computeroutput"><span class="identifier">cg</span></code>. The
+                    result is a negated char generator that inverts the test condition
+                    of the character generator it is attached to.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            A character <code class="computeroutput"><span class="identifier">ch</span></code> is assumed
+            to belong to the character range defined by <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch1</span><span class="special">,</span> <span class="identifier">ch2</span><span class="special">)</span></code> if its character value (binary representation)
+            interpreted in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>
+            is not smaller than the character value of <code class="computeroutput"><span class="identifier">ch1</span></code>
+            and not larger then the character value of <code class="computeroutput"><span class="identifier">ch2</span></code>
+            (i.e. <code class="computeroutput"><span class="identifier">ch1</span> <span class="special"><=</span>
+            <span class="identifier">ch</span> <span class="special"><=</span>
+            <span class="identifier">ch2</span></code>).
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">charset</span></code> parameter
+            passed to <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">charset</span><span class="special">)</span></code>
+            must be a string containing more than one character. Every single character
+            in this string is assumed to belong to the character set defined by this
+            expression. An exception to this is the <code class="computeroutput"><span class="char">'-'</span></code>
+            character which has a special meaning if it is not specified as the first
+            and not the last character in <code class="computeroutput"><span class="identifier">charset</span></code>.
+            If the <code class="computeroutput"><span class="char">'-'</span></code> is used in between
+            to characters it is interpreted as spanning a character range. A character
+            <code class="computeroutput"><span class="identifier">ch</span></code> is considered to belong
+            to the defined character set <code class="computeroutput"><span class="identifier">charset</span></code>
+            if it matches one of the characters as specified by the string parameter
+            described above. For example
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Example
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"abc"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    'a', 'b', and 'c'
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-z"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    all characters (and including) from 'a' to 'z'
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-zA-Z"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    all characters (and including) from 'a' to 'z' and 'A' and 'Z'
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"-1-9"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    '-' and all characters (and including) from '1' to '9'
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.char.char_generator.attributes"></a><h6>
+<a name="id751976"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>, attribute
+                    is mandatory (otherwise compilation will fail). <code class="computeroutput"><span class="identifier">Ch</span></code> is the character type of
+                    the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">ch</span></code> and succeeds
+                    only if both are equal, failing otherwise. <code class="computeroutput"><span class="identifier">Ch</span></code>
+                    is the character type of the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"c"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">c</span></code> and succeeds
+                    only if both are equal, failing otherwise. <code class="computeroutput"><span class="identifier">Ch</span></code>
+                    is the character type of the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch1</span><span class="special">,</span>
+                    <span class="identifier">ch2</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>, attribute
+                    is mandatory (otherwise compilation will fail), the generator
+                    succeeds if the attribute belongs to the character range <code class="computeroutput"><span class="special">[</span><span class="identifier">ch1</span><span class="special">,</span> <span class="identifier">ch2</span><span class="special">]</span></code> interpreted in the character
+                    set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    <code class="computeroutput"><span class="identifier">Ch</span></code> is the character
+                    type of the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">cs</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>, attribute
+                    is mandatory (otherwise compilation will fail), the generator
+                    succeeds if the attribute belongs to the character set <code class="computeroutput"><span class="identifier">cs</span></code>, interpreted in the character
+                    set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    <code class="computeroutput"><span class="identifier">Ch</span></code> is the character
+                    type of the <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">~</span><span class="identifier">cg</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Attribute of <code class="computeroutput"><span class="identifier">cg</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.char.char_generator.complexity"></a><h6>
+<a name="id752529"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The complexity of <code class="computeroutput"><span class="identifier">ch</span></code>,
+            <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>,
+            <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>, and <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"c"</span><span class="special">)</span></code> is constant as all generators emit exactly
+            one character per invocation.
+          </p>
+<p>
+            The character range generator (<code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch1</span><span class="special">,</span> <span class="identifier">ch2</span><span class="special">)</span></code>) additionally requires constant lookup
+            time for the verification whether the attribute belongs to the character
+            range.
+          </p>
+<p>
+            The character set generator (<code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">cs</span><span class="special">)</span></code>) additionally requires O(log N) lookup
+            time for the verification whether the attribute belongs to the character
+            set, where N is the number of characters in the character set.
+          </p>
+<a name="spirit.karma.reference.char.char_generator.example"></a><h6>
+<a name="id752713"></a>
+            <a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">char_</span></code>
+            generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="char">'A'</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="char">'A'</span><span class="special">));</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">,</span> <span class="char">'a'</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">));</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">),</span> <span class="char">'A'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">),</span> <span class="char">'B'</span><span class="special">);</span>         <span class="comment">// fails (as 'A' != 'B')
+</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"A"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">,</span> <span class="char">'Z'</span><span class="special">),</span> <span class="char">'A'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">,</span> <span class="char">'Z'</span><span class="special">),</span> <span class="char">'a'</span><span class="special">);</span>    <span class="comment">// fails (as 'a' does not belong to 'A'...'Z')
+</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"k"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="string">"a-z0-9"</span><span class="special">),</span> <span class="char">'k'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="string">"a-z0-9"</span><span class="special">),</span> <span class="char">'A'</span><span class="special">);</span>    <span class="comment">// fails (as 'A' does not belong to "a-z0-9")
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char_class.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,77 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Directive</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="auxiliary/lazy.html" title="Lazy (lazy)">
+<link rel="next" href="directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary/lazy.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive/alignment.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Directive">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.directive"></a><a class="link" href="directive.html" title="Directive"> Directive</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="directive/alignment.html"> Alignment
+          Directives (<code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/repeat.html"> Repetition
+          Directive (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/delimit.html"> Directives
+          Controlling Automatic Delimiting (<code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/upperlower.html"> Directives
+          Controlling Case Sensitivity (<code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/maxwidth.html"> Controlling
+          the Maximum Field Wield (<code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/buffer.html"> Temporary
+          Output Buffering (<code class="computeroutput"><span class="identifier">buffer</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/omit.html"> Consume Attribute
+          (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a></span></dt>
+</dl></div>
+<p>
+          This module includes different generator directives. It includes alignement
+          directives (<code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>, and <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>), repetition (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>), directives controlling automatic delimiting
+          (<code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>
+          and <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>),
+          controlling case sensitivity (<code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>), field width (<code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>), buffering (<code class="computeroutput"><span class="identifier">buffer</span><span class="special">[]</span></code>), and attribute handling (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>).
+        </p>
+<a name="spirit.karma.reference.directive.module_header"></a><h6>
+<a name="id804011"></a>
+          <a class="link" href="directive.html#spirit.karma.reference.directive.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_directive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary/lazy.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive/alignment.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,756 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Alignment Directives (left_align[], center[], right_align[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="../directive.html" title="Directive">
+<link rel="next" href="repeat.html" title="Repetition Directive (repeat[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="repeat.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Alignment Directives (left_align[], center[], right_align[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.alignment"></a><a class="link" href="alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"> Alignment
+          Directives (<code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.alignment.description"></a><h6>
+<a name="id804127"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.description">Description</a>
+          </h6>
+<p>
+            The alignment directives allow to left align, right align or center output
+            emitted by other generators into columns of a specified width while using
+            an arbitrary generator to create the padding.
+          </p>
+<a name="spirit.karma.reference.directive.alignment.header"></a><h6>
+<a name="id804144"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.header">Header</a>
+          </h6>
+<p>
+            For the <code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/left_alignment.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_left_alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            For the <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/center_alignment.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_center_alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            For the <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/right_alignment.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_right_alignment</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.directive.alignment.namespace"></a><h6>
+<a name="id804367"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">left_align</span> <span class="comment">//
+                    alias: boost::spirit::karma::left_align</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">center</span> <span class="comment">// alias:
+                    boost::spirit::karma::center</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">right_align</span> <span class="comment">//
+                    alias: boost::spirit::karma::right_align</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.alignment.model_of"></a><h6>
+<a name="id805350"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">pad</span></code></span></dt>
+<dd><p>
+                A generator object, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code>,
+            <code class="computeroutput"><span class="identifier">Pad</span></code></span></dt>
+<dd><p>
+                Attribute types of the generators <code class="computeroutput"><span class="identifier">a</span></code>
+                and <code class="computeroutput"><span class="identifier">pad</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">width</span></code></span></dt>
+<dd><p>
+                Numeric literal, any unsigned integer value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to an unsigned integer value
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.alignment.expression_semantics"></a><h6>
+<a name="id805500"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> left
+                    aligned in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> centered
+                    in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using <code class="computeroutput"><span class="identifier">space</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail (except if the underlying output stream reports
+                    an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in a column of width as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_LENGTH</span></code>
+                    (default: 10), while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> right
+                    aligned in a column of the given <code class="computeroutput"><span class="identifier">width</span></code>,
+                    while using the generator <code class="computeroutput"><span class="identifier">pad</span></code>
+                    to emit the necessary padding. This generator succeeds as long
+                    as its embedded and padding generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">pad</span></code> do not
+                    fail (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              None of the generator directives listed above limits the emitted output
+              to the respective column width. If the emitted output is longer than
+              the specified (or implied) column width, the generated output overruns
+              the column to the right.
+            </p>
+<p>
+              If the output needs to be limitted to a specified column width, use
+              the <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>
+              directive, for instance: 
+</p>
+<pre class="programlisting"><span class="identifier">maxwidth</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">right_align</span><span class="special">(</span><span class="number">12</span><span class="special">)[</span><span class="string">"1234567890"</span><span class="special">]]</span>
+</pre>
+<p>
+              which will output (without the quotes): 
+</p>
+<pre class="programlisting"><span class="string">"  123456"</span></pre>
+<p>
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.directive.alignment.attributes"></a><h6>
+<a name="id806540"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">left_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">center</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span>
+                    <span class="identifier">width</span><span class="special">)[]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">pad</span><span class="special">:</span> <span class="identifier">Pad</span> <span class="special">--></span> <span class="identifier">right_align</span><span class="special">(</span><span class="identifier">pad</span><span class="special">,</span> <span class="identifier">width</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.alignment.complexity"></a><h6>
+<a name="id808556"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the alignment generator directives is defined
+                by the complexity of its embedded and padding generator. The complexity
+                of the left alignment directive generator itself is O(1). The complexity
+                of the center and right alignment directive generators itself is
+                O(N). where <code class="computeroutput"><span class="identifier">N</span></code> is
+                the number of characters emitted by the embedded and padding generators.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.alignment.example"></a><h6>
+<a name="id808588"></a>
+            <a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">left_align</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">center</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">right_align</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the alignment generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">p</span> <span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0     |2.0"</span><span class="special">,</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'|'</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"   1.0  |2.0"</span><span class="special">,</span> <span class="identifier">center</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'|'</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"     1.0|2.0"</span><span class="special">,</span> <span class="identifier">right_align</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'|'</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="repeat.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,308 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Temporary Output Buffering (buffer[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])">
+<link rel="next" href="omit.html" title="Consume Attribute (omit[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="maxwidth.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="omit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Temporary Output Buffering (buffer[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.buffer"></a><a class="link" href="buffer.html" title="Temporary Output Buffering (buffer[])"> Temporary
+          Output Buffering (<code class="computeroutput"><span class="identifier">buffer</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.buffer.description"></a><h6>
+<a name="id821843"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.description">Description</a>
+          </h6>
+<p>
+            All generator components (except the <a class="link" href="../operator/alternative.html" title="Alternative (a | b)">alternative
+            (<code class="computeroutput"><span class="special">|</span></code>)</a> generator) pass
+            their generated output directly to the underlying output stream. If a
+            generator fails halfway through, the output generated so far is not 'rolled
+            back'. The buffering generator directive allows to avoid this unwanted
+            output to be generated. It temporarily redirects the output produced
+            by the embedded generator into a buffer. This buffer is flushed to the
+            underlying stream only after the embedded generator succeeded, but is
+            discarded otherwise.
+          </p>
+<a name="spirit.karma.reference.directive.buffer.header"></a><h6>
+<a name="id821872"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/buffer.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">buffer</span> <span class="comment">// alias:
+                    boost::spirit::karma::buffer</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.buffer.model_of"></a><h6>
+<a name="id822012"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code></span></dt>
+<dd><p>
+                Attribute type of generator <code class="computeroutput"><span class="identifier">a</span></code>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.buffer.expression_semantics"></a><h6>
+<a name="id822101"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is invoked but its output is temporarily intercepted and stored
+                    in an internal buffer. If <code class="computeroutput"><span class="identifier">a</span></code>
+                    succeeds the buffer content is flushed to the underlying output
+                    stream, otherwise the buffer content is discarded. The buffer
+                    directive succeeds as long as the embedded generator succeeded
+                    (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              If you want to make the buffered generator succeed regardless of the
+              outcome of the embedded generator, simply wrap the <code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code> into an additional optional: <code class="computeroutput"><span class="special">-</span><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code> (see <a class="link" href="../operator/optional.html" title="Optional (-a)">optional
+              (unary <code class="computeroutput"><span class="special">-</span></code>)</a>).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.directive.buffer.attributes"></a><h6>
+<a name="id823381"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.buffer.complexity"></a><h6>
+<a name="id823553"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the buffering generator directive is defined
+                by the complexity of its embedded generator. The complexity of the
+                buffering directive generator itself is O(1).
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.buffer.example"></a><h6>
+<a name="id823577"></a>
+            <a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a buffering generator directive. It shows how the partial
+            output generated in the first example does not show up in the generated
+            output as the plus generator fails (no data is available, see <a class="link" href="../operator/plus.html" title="Plus (+a)">plus
+            (unary <code class="computeroutput"><span class="special">+</span></code>)</a>).
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>                <span class="comment">// empty container
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="special">-</span><span class="identifier">buffer</span><span class="special">[</span><span class="char">'['</span> <span class="special"><<</span> <span class="special">+</span><span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>                     <span class="comment">// now, fill the container
+</span><span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[1.02.0]"</span><span class="special">,</span> <span class="identifier">buffer</span><span class="special">[</span><span class="char">'['</span> <span class="special"><<</span> <span class="special">+</span><span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="maxwidth.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="omit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,384 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Directives Controlling Automatic Delimiting (verbatim[], delimit[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="repeat.html" title="Repetition Directive (repeat[])">
+<link rel="next" href="upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repeat.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="upperlower.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.delimit"></a><a class="link" href="delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"> Directives
+          Controlling Automatic Delimiting (<code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.delimit.description"></a><h6>
+<a name="id814008"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.description">Description</a>
+          </h6>
+<p>
+            The directives <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code> can be used to control automatic delimiting.
+            The directive <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code> disables any automatic delimiting,
+            while the directive <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code> (re-)enables automatic delimiting.
+          </p>
+<a name="spirit.karma.reference.directive.delimit.header"></a><h6>
+<a name="id814068"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.header">Header</a>
+          </h6>
+<p>
+            For the <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/verbatim.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_verbatim</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            For the <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/delimit.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_delimit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.directive.delimit.namespace"></a><h6>
+<a name="id814224"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">verbatim</span> <span class="comment">//
+                    alias: boost::spirit::karma::verbatim</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">delimit</span> <span class="comment">//
+                    alias: boost::spirit::karma::delimit</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.delimit.model_of"></a><h6>
+<a name="id814342"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">d</span></code></span></dt>
+<dd><p>
+                A generator object, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code>,
+            <code class="computeroutput"><span class="identifier">D</span></code></span></dt>
+<dd><p>
+                Attribute types of the generators <code class="computeroutput"><span class="identifier">a</span></code>
+                and <code class="computeroutput"><span class="identifier">d</span></code>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.delimit.expression_semantics"></a><h6>
+<a name="id814468"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Enable automatic delimiting for the embedded generator <code class="computeroutput"><span class="identifier">a</span></code> while using the <code class="computeroutput"><span class="identifier">space</span></code> generator as the delimiting
+                    generator. If used inside a <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code> directive it re-enables the
+                    delimiter generator as used outside of this <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code> instead. The directive succeeds
+                    as long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">delimit</span><span class="special">(</span><span class="identifier">d</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Enable automatic delimiting for the embedded generator <code class="computeroutput"><span class="identifier">a</span></code> while using the generator
+                    <code class="computeroutput"><span class="identifier">d</span></code> as the delimiting
+                    generator. The directive succeeds as long as the embedded generator
+                    succeeded (except if the underlying output stream reports an
+                    error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Disable automatic delimiting for the embedded generator <code class="computeroutput"><span class="identifier">a</span></code>. The directive succeeds as
+                    long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error). This directive it has no effect
+                    if it is used when no delimiting is active.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.delimit.attributes"></a><h6>
+<a name="id814702"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">delimit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">delimit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">delimit</span><span class="special">(</span><span class="identifier">d</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">d</span><span class="special">:</span> <span class="identifier">D</span> <span class="special">--></span> <span class="identifier">delimit</span><span class="special">(</span><span class="identifier">d</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">d</span><span class="special">:</span> <span class="identifier">D</span> <span class="special">--></span> <span class="identifier">delimit</span><span class="special">(</span><span class="identifier">d</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.delimit.complexity"></a><h6>
+<a name="id815157"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the generator directives <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>
+                and <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>
+                is defined by the complexity of its embedded generators. The complexity
+                of the directives themselves is O(1).
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.delimit.example"></a><h6>
+<a name="id815202"></a>
+            <a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T1</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr1</span><span class="special">,</span> 
+    <span class="identifier">T2</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr2</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr1</span><span class="special">,</span> <span class="identifier">attr2</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">verbatim</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">delimit</span></code>
+            generator directive:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[ 2.0 , 4.3 ] "</span><span class="special">,</span> 
+    <span class="identifier">delimit</span><span class="special">[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="number">2.0</span><span class="special">,</span> <span class="number">4.3</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[*2.0*,*4.3*]*"</span><span class="special">,</span> 
+    <span class="identifier">delimit</span><span class="special">(</span><span class="char">'*'</span><span class="special">)[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="number">2.0</span><span class="special">,</span> <span class="number">4.3</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[2.0, 4.3 ] "</span><span class="special">,</span> 
+    <span class="identifier">delimit</span><span class="special">[</span><span class="identifier">verbatim</span><span class="special">[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">','</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="number">2.0</span><span class="special">,</span> <span class="number">4.3</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repeat.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="upperlower.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,353 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Controlling the Maximum Field Wield (maxwidth[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])">
+<link rel="next" href="buffer.html" title="Temporary Output Buffering (buffer[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="upperlower.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="buffer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Controlling the Maximum Field Wield (maxwidth[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.maxwidth"></a><a class="link" href="maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])"> Controlling
+          the Maximum Field Wield (<code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.maxwidth.description"></a><h6>
+<a name="id820133"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>
+            directive allows to limit (truncate) the overall length of the output
+            generated by the embedded generator.
+          </p>
+<a name="spirit.karma.reference.directive.maxwidth.header"></a><h6>
+<a name="id820161"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/maxwidth.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_maxwidth</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">maxwidth</span> <span class="comment">//
+                    alias: boost::spirit::karma::maxwidth</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.maxwidth.model_of"></a><h6>
+<a name="id820301"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code></span></dt>
+<dd><p>
+                Attribute type of the generator <code class="computeroutput"><span class="identifier">a</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dd><p>
+                Numeric literal, any unsigned integer value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to an unsigned integer value
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.maxwidth.expression_semantics"></a><h6>
+<a name="id820414"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Limit the overall length of the emitted output of the embedded
+                    generator (including characters generated by automatic delimiting)
+                    to the number of characters as defined by the preprocessor constant
+                    <code class="computeroutput"><span class="identifier">BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH</span></code>.
+                    Any additional output is truncated. The directive succeeds as
+                    long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Limit the overall length of the emitted output of the embedded
+                    generator (including characters generated by automatic delimiting)
+                    to the number of characters as defined by <code class="computeroutput"><span class="identifier">num</span></code>.
+                    Any additional output is truncated. The directive succeeds as
+                    long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>
+              generator directive does not pads the generated output to fill the
+              specified column width. If the emitted output is shorter than the specified
+              (or implied) column width, the generated output will be more narrow
+              than the column width.
+            </p>
+<p>
+              If the output needs to always be equal to a specified column width,
+              use one of the alignment directives <code class="computeroutput"><span class="identifier">left</span><span class="special">-</span><span class="identifier">align</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>, or <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>, for instance: 
+</p>
+<pre class="programlisting"><span class="identifier">maxwidth</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">left_align</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="string">"1234"</span><span class="special">]]</span>
+</pre>
+<p>
+              which will output: <code class="computeroutput"><span class="string">"1234 "</span></code>
+              (without the quotes).
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.directive.maxwidth.attributes"></a><h6>
+<a name="id820679"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">maxwidth</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">maxwidth</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">maxwidth</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">maxwidth</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.maxwidth.complexity"></a><h6>
+<a name="id820986"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the generator directive <code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code> is defined by the complexity of
+                its embedded generator. The complexity of the directive itself is
+                O(N), where <code class="computeroutput"><span class="identifier">N</span></code> is
+                the number of characters generated by the maxwidth directive.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.maxwidth.example"></a><h6>
+<a name="id821028"></a>
+            <a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">maxwidth</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">left_align</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">right_align</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">maxwidth</span></code>
+            generator directive:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"01234"</span><span class="special">,</span> <span class="identifier">maxwidth</span><span class="special">(</span><span class="number">5</span><span class="special">)[</span><span class="string">"0123456789"</span><span class="special">]);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"  012"</span><span class="special">,</span> <span class="identifier">maxwidth</span><span class="special">(</span><span class="number">5</span><span class="special">)[</span><span class="identifier">right_align</span><span class="special">(</span><span class="number">12</span><span class="special">)[</span><span class="string">"0123456789"</span><span class="special">]]);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"0123    "</span><span class="special">,</span> <span class="identifier">maxwidth</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="identifier">left_align</span><span class="special">(</span><span class="number">8</span><span class="special">)[</span><span class="string">"0123"</span><span class="special">]]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="upperlower.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="buffer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,317 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Consume Attribute (omit[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="buffer.html" title="Temporary Output Buffering (buffer[])">
+<link rel="next" href="../operator.html" title="Operator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="buffer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Consume Attribute (omit[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.omit"></a><a class="link" href="omit.html" title="Consume Attribute (omit[])"> Consume Attribute
+          (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.omit.description"></a><h6>
+<a name="id824575"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.description">Description</a>
+          </h6>
+<p>
+            Consumes the attribute type of the embedded generator without generating
+            any output.
+          </p>
+<a name="spirit.karma.reference.directive.omit.header"></a><h6>
+<a name="id824592"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/omit.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_omit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">omit</span> <span class="comment">// alias:
+                    boost::spirit::karma::omit</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.omit.model_of"></a><h6>
+<a name="id824732"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code></span></dt>
+<dd><p>
+                Attribute type of generator <code class="computeroutput"><span class="identifier">a</span></code>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.omit.expression_semantics"></a><h6>
+<a name="id824821"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The <code class="computeroutput"><span class="identifier">omit</span></code> directive
+                    consumes the attribute type of the embedded generator <code class="computeroutput"><span class="identifier">A</span></code> without generating any output.
+                    It succeeds always.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.omit.attributes"></a><h6>
+<a name="id824935"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.omit.complexity"></a><h6>
+<a name="id825107"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the <code class="computeroutput"><span class="identifier">omit</span></code>
+                generator directive is O(1) as it does not generate any output.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.omit.example"></a><h6>
+<a name="id825138"></a>
+            <a class="link" href="omit.html#spirit.karma.reference.directive.omit.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a <code class="computeroutput"><span class="identifier">omit</span></code>
+            generator directive. It shows how it consumes the first element of the
+            provided attribute without generating anything, leaving the second element
+            of the attribute to the non-wrapped <code class="computeroutput"><span class="identifier">double_</span></code>
+            generator.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">p</span> <span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Generally, this directive is helpful in situations, where the attribute
+            type contains more information (elements) than need to be used to generate
+            the required output. Normally in such situations we would resolve to
+            use semantic actions to explicitly pass the correct parts of the overall
+            attribute to the generators. The <code class="computeroutput"><span class="identifier">omit</span></code>
+            directive helps achieving the same without having to use semantic actions.
+          </p>
+<p>
+            Consider the attribute type:
+          </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">attribute_type</span><span class="special">;</span>
+</pre>
+<p>
+            where we need to generate output only from the first and last element:
+          </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert</span><span class="special">:</span><span class="identifier">iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">iterator_type</span><span class="special">;</span>
+
+<span class="identifier">karma</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">iterator_type</span><span class="special">,</span> <span class="identifier">attribute_type</span><span class="special">()></span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">r</span> <span class="special">=</span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)]</span> <span class="special"><<</span> <span class="identifier">string</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)];</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">iterator_type</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">attribute_type</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2.0</span><span class="special">,</span> <span class="string">"example"</span><span class="special">));</span>  <span class="comment">// will generate: '1example'
+</span></pre>
+<p>
+            This is error prone and not really readable. The same can be achieved
+            by using the <code class="computeroutput"><span class="identifier">omit</span></code> directive:
+          </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">int_</span> <span class="special"><<</span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">string</span><span class="special">;</span>
+</pre>
+<p>
+            which is at the same time more readable and more efficient as we don't
+            have to use semantic actions.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="buffer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,452 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Repetition Directive (repeat[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="alignment.html" title="Alignment Directives (left_align[], center[], right_align[])">
+<link rel="next" href="delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="delimit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Repetition Directive (repeat[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.repeat"></a><a class="link" href="repeat.html" title="Repetition Directive (repeat[])"> Repetition
+          Directive (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.repeat.description"></a><h6>
+<a name="id809696"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.description">Description</a>
+          </h6>
+<p>
+            The repetition directive allows to repeat an arbitrary generator expression
+            while optionally specifying the lower and upper repetition counts. It
+            provides a more powerful and flexible mechanism for repeating a generator.
+            There are grammars that are impractical and cumbersome, if not impossible,
+            for the basic EBNF iteration syntax ( <a class="link" href="../operator/kleene.html" title="Kleene Star (*a)">unary
+            <code class="computeroutput"><span class="char">'*'</span></code></a> and the [karma_plus
+            unary <code class="computeroutput"><span class="char">'+'</span></code>]) to specify. Examples:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              A file name may have a maximum of 255 characters only.
+            </li>
+<li class="listitem">
+              A specific bitmap file format has exactly 4096 RGB color information.
+            </li>
+<li class="listitem">
+              A 256 bit binary string (1..256 1s or 0s).
+            </li>
+</ul></div>
+<a name="spirit.karma.reference.directive.repeat.header"></a><h6>
+<a name="id809746"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/repeat.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_repeat</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.directive.repeat.namespace"></a><h6>
+<a name="id809820"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">repeat</span> <span class="comment">// alias:
+                    boost::spirit::karma::repeat</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">inf</span> <span class="comment">// alias:
+                    boost::spirit::karma::inf</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.repeat.model_of"></a><h6>
+<a name="id811582"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span><span class="special">,</span> <span class="identifier">num1</span><span class="special">,</span> <span class="identifier">num2</span></code></span></dt>
+<dd><p>
+                Numeric literals, any unsigned integer value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to an unsigned integer value
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">inf</span></code></span></dt>
+<dd><p>
+                Placeholder expression standing for 'no upper repeat limit'
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.repeat.expression_semantics"></a><h6>
+<a name="id811704"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat the generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    zero or more times. This generator succeeds as long as its embedded
+                    generator <code class="computeroutput"><span class="identifier">a</span></code> does
+                    not fail (except if the underlying output stream reports an error).
+                    This variant of <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code> is semantically equivalent
+                    to the <a class="link" href="../operator/kleene.html" title="Kleene Star (*a)">Kleene
+                    Star operator <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code></a>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat the generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    exactly <code class="computeroutput"><span class="identifier">num</span></code> times.
+                    This generator succeeds as long as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code> does not fail and as long
+                    as the associated attribute (container) contains at least <code class="computeroutput"><span class="identifier">num</span></code> elements (except if the
+                    underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num1</span><span class="special">,</span>
+                    <span class="identifier">num2</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat the generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    at least <code class="computeroutput"><span class="identifier">num1</span></code>
+                    times but not more than <code class="computeroutput"><span class="identifier">num2</span></code>
+                    times. This generator succeeds as long as its embedded generator
+                    <code class="computeroutput"><span class="identifier">a</span></code> does not fail
+                    and as long as the associated attribute (container) contains
+                    at least <code class="computeroutput"><span class="identifier">num1</span></code>
+                    elements (except if the underlying output stream reports an error).
+                    If the associated attribute (container) does contain more than
+                    <code class="computeroutput"><span class="identifier">num2</span></code> elements,
+                    this directive limits the repeat count to <code class="computeroutput"><span class="identifier">num2</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat the generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    at least <code class="computeroutput"><span class="identifier">num1</span></code>
+                    times. No upper limit for the repeat count is set. This generator
+                    succeeds as long as its embedded generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    does not fail and as long as the associated attribute (container)
+                    contains at least <code class="computeroutput"><span class="identifier">num</span></code>
+                    elements (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.repeat.attributes"></a><h6>
+<a name="id812094"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num1</span><span class="special">,</span>
+                    <span class="identifier">num2</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num1</span><span class="special">,</span> <span class="identifier">num2</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num1</span><span class="special">,</span> <span class="identifier">num2</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span>
+                    <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">num</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The table above uses <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as placeholders only.
+            </p>
+<p>
+              The notation of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> stands for <span class="emphasis"><em>any STL container</em></span>
+              holding elements of type <code class="computeroutput"><span class="identifier">A</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.directive.repeat.complexity"></a><h6>
+<a name="id812824"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the repetition generator is defined by
+                the complexity of its embedded generator. The complexity of the repeat
+                itself is O(N), where N is the number of repetitions to execute.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.repeat.example"></a><h6>
+<a name="id812848"></a>
+            <a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">repeat</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">repeat</span></code>
+            generator directive:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[1.0][2.0][3.0]"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="identifier">v</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"[1.0][2.0]"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">2</span><span class="special">)[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="identifier">v</span><span class="special">);</span>
+
+<span class="comment">// fails because of insufficient number of items
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">4</span><span class="special">)[</span><span class="char">'['</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">']'</span><span class="special">],</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alignment.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="delimit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,389 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Directives Controlling Case Sensitivity (upper[], lower[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])">
+<link rel="next" href="maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="delimit.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="maxwidth.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Directives Controlling Case Sensitivity (upper[], lower[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.directive.upperlower"></a><a class="link" href="upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])"> Directives
+          Controlling Case Sensitivity (<code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.directive.upperlower.description"></a><h6>
+<a name="id817310"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.description">Description</a>
+          </h6>
+<p>
+            The generator directives <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span><span class="special">[]</span></code> force their embedded generators to
+            emit lower case or upper case only characters based on the interpretation
+            of the generated characters in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code> (see <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>).
+          </p>
+<a name="spirit.karma.reference.directive.upperlower.header"></a><h6>
+<a name="id817375"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/upper_lower_case.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_upper_lower_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.directive.upperlower.namespace"></a><h6>
+<a name="id817450"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.karma.reference.directive.upperlower.model_of"></a><h6>
+<a name="id817556"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The model of <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code> is the model of its subject generator.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A generator object
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code></span></dt>
+<dd><p>
+                Attribute type of the generator <code class="computeroutput"><span class="identifier">a</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.directive.upperlower.expression_semantics"></a><h6>
+<a name="id817675"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>
+            and <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>
+            directives have no special generator semantics. They are pure modifier
+            directives. They indirectly influence the way all subject generators
+            work. They add information (the <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">upper</span></code>
+            or <code class="computeroutput"><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lower</span></code>) to the <code class="computeroutput"><span class="identifier">Modifier</span></code>
+            template parameter used while tranforming the <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">expr</span></code>
+            into the corresponding generator expression. This is achieved by the
+            following specializations:
+          </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">spirit</span>
+<span class="special">{</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">CharEncoding</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_modifier_directive</span><span class="special"><</span>
+            <span class="identifier">karma</span><span class="special">::</span><span class="identifier">domain</span>
+          <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">char_code</span><span class="special"><</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">lower</span><span class="special">,</span> <span class="identifier">CharEncoding</span><span class="special">></span> <span class="special">></span>
+      <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> 
+    <span class="special">{};</span>
+
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">CharEncoding</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">is_modifier_directive</span><span class="special"><</span>
+            <span class="identifier">karma</span><span class="special">::</span><span class="identifier">domain</span>
+          <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">char_code</span><span class="special"><</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">upper</span><span class="special">,</span> <span class="identifier">CharEncoding</span><span class="special">></span> <span class="special">></span>
+      <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> 
+<span class="special">}}</span>
+</pre>
+<p>
+            (for more details see the section describing the compilation process
+            of the Boost.Proto
+            expression into the corresponding parser expressions).
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> as
+                    lower case, interpreted in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>. The directive succeeds
+                    as long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate <code class="computeroutput"><span class="identifier">a</span></code> as
+                    upper case, interpreted in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>. The directive succeeds
+                    as long as the embedded generator succeeded (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              If both directives are 'active' with regard to a generator, the innermost
+              of those directives takes precendence. For instance: 
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">lower</span><span class="special">[</span><span class="char">'A'</span> <span class="special"><<</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">upper</span><span class="special">[</span><span class="char">'b'</span><span class="special">]])</span>
+</pre>
+<p>
+              will generate <code class="computeroutput"><span class="string">"aB"</span></code>
+              (without the quotes).
+            </p>
+<p>
+              Further, the directives will have no effect on generators emitting
+              characters not having an upper case or lower case equivalent in the
+              character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.directive.upperlower.attributes"></a><h6>
+<a name="id818276"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">:</span><span class="identifier">lower</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">:</span><span class="identifier">lower</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">:</span><span class="identifier">lower</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">:</span><span class="identifier">upper</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">:</span><span class="identifier">upper</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">:</span><span class="identifier">upper</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.directive.upperlower.complexity"></a><h6>
+<a name="id818605"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the generator directives <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span><span class="special">[]</span></code>
+                and <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span><span class="special">[]</span></code>
+                is defined by the complexity of its embedded generators. The directives
+                themselves are compile time only directives, having no impact on
+                runtime performance.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.directive.upperlower.example"></a><h6>
+<a name="id818665"></a>
+            <a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">upper</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">lower</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of the <code class="computeroutput"><span class="identifier">upper</span></code>
+            and <code class="computeroutput"><span class="identifier">lower</span></code> generator directives:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc:2.0e-06"</span><span class="special">,</span> <span class="identifier">lower</span><span class="special">[</span><span class="string">"ABC:"</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">],</span> <span class="number">2e-6</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"ABC:2.0E-06"</span><span class="special">,</span> <span class="identifier">upper</span><span class="special">[</span><span class="string">"abc:"</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">],</span> <span class="number">2e-6</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="delimit.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="maxwidth.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generator Concepts</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="generator_concepts/generator.html" title="Generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="generator_concepts/generator.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Generator Concepts">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.generator_concepts"></a><a class="link" href="generator_concepts.html" title="Generator Concepts">Generator
+        Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Generator</span></dt>
+<dt><span class="section">PrimitiveGenerator</span></dt>
+<dt><span class="section">UnaryGenerator</span></dt>
+<dt><span class="section">BinaryGenerator</span></dt>
+<dt><span class="section">NaryGenerator</span></dt>
+</dl></div>
+<p>
+          <span class="emphasis"><em>Spirit.Karma</em></span> generators fall into a couple of generalized
+          concepts.
+          The <span class="emphasis"><em>Generator</em></span> is the most fundamental concept. All
+          <span class="emphasis"><em>Spirit.Karma</em></span> generators are models of the <span class="emphasis"><em>Generator</em></span>
+          concept. <span class="emphasis"><em>PrimitiveGenerator</em></span>, <span class="emphasis"><em>UnaryGenerator</em></span>,
+          <span class="emphasis"><em>BinaryGenerator</em></span> and <span class="emphasis"><em>NaryGenerator</em></span>
+          are all refinements of the <span class="emphasis"><em>Generator</em></span> concept.
+        </p>
+<p>
+          The following sections provide details on these concepts.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="generator_concepts/generator.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,247 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>BinaryGenerator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="prev" href="unarygenerator.html" title="UnaryGenerator">
+<link rel="next" href="narygenerator.html" title="NaryGenerator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="narygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="BinaryGenerator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.generator_concepts.binarygenerator"></a><a class="link" href="binarygenerator.html" title="BinaryGenerator">BinaryGenerator</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.description"></a><h6>
+<a name="id743789"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>BinaryGenerator</em></span> is a composite parser that has a
+            two subjects, <code class="computeroutput"><span class="identifier">left</span></code> and
+            <code class="computeroutput"><span class="identifier">right</span></code>. The BinaryGenerator
+            allows its subjects to be treated in the same way as a single instance
+            of a <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a> following the Composite
+            Design Pattern.
+          </p>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.refinement_of"></a><h6>
+<a name="id743836"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+                A BinaryGenerator.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dd><p>
+                A BinaryGenerator type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions"></a><h6>
+<a name="id743913"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>, for any BinaryGenerator
+            the following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">left</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Left generator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">right</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Right generator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.type_expressions"></a><h6>
+<a name="id744075"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">G</span><span class="special">::</span><span class="identifier">left_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The left parser type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">G</span><span class="special">::</span><span class="identifier">right_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The right parser type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_binary_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">G</span></code>
+                    is a BinaryGenerator, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.invariants"></a><h6>
+<a name="id744274"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.invariants">Invariants</a>
+          </h6>
+<p>
+            For any BinaryGenerator, <code class="computeroutput"><span class="identifier">G</span></code>,
+            the following invariants always hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">left_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">right_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li>
+</ul></div>
+<a name="spirit.karma.reference.generator_concepts.binarygenerator.models"></a><h6>
+<a name="id744411"></a>
+            <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.models">Models</a>
+          </h6>
+<p>
+            The following generators conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<a class="link" href="../operator/list.html" title="Lists (a % b)">list (<code class="computeroutput"><span class="special">%</span></code>)</a>.
+            </li></ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to models of BinaryGenerator
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="narygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,278 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Generator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="prev" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="next" href="primitivegenerator.html" title="PrimitiveGenerator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitivegenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Generator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.generator_concepts.generator"></a><a class="link" href="generator.html" title="Generator">Generator</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.generator_concepts.generator.description"></a><h6>
+<a name="id736912"></a>
+            <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.description">Description</a>
+          </h6>
+<p>
+            The <span class="emphasis"><em>Generator</em></span> is the most fundamental concept. A
+            Generator has a member function, <code class="computeroutput"><span class="identifier">generate</span></code>,
+            that accepts an <code class="computeroutput"><span class="identifier">OutputIterator</span></code>
+            and returns bool as its result. The iterator receives the data being
+            generated. The Generator's <code class="computeroutput"><span class="identifier">generate</span></code>
+            member function returns <code class="computeroutput"><span class="keyword">true</span></code>
+            if the generator succeeds. Each Generator can represent a specific pattern
+            or algorithm, or it can be a more complex generator formed as a composition
+            of other Generator's.
+          </p>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Generator</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Generator</span></code> type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">OutIter</span></code></span></dt>
+<dd><p>
+                An <code class="computeroutput"><span class="identifier">OutputIterator</span></code>
+                type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sink</span></code></span></dt>
+<dd><p>
+                An <code class="computeroutput"><span class="identifier">OutputIterator</span></code>
+                instance.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dd><p>
+                The generator's Context type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">context</span></code></span></dt>
+<dd><p>
+                The generator's Context, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">delimit</span></code></span></dt>
+<dd><p>
+                A delimiter Generator, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">attrib</span></code></span></dt>
+<dd><p>
+                A Compatible Attributes, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.generator_concepts.generator.valid_expressions"></a><h6>
+<a name="id737166"></a>
+            <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In the expressions below, the behavior of the generator, <code class="computeroutput"><span class="identifier">g</span></code>, as well as how <code class="computeroutput"><span class="identifier">delimit</span></code>
+            and <code class="computeroutput"><span class="identifier">attrib</span></code> are handled
+            by <code class="computeroutput"><span class="identifier">g</span></code>, are left unspecified
+            in the base <code class="computeroutput"><span class="identifier">Generator</span></code>
+            concept. These are specified in subsequent, more refined concepts and
+            by the actual models therof.
+          </p>
+<p>
+            For any Generator the following expressions must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">g</span><span class="special">.</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">context</span><span class="special">,</span> <span class="identifier">delimit</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the output sequence by inserting the generated characters/tokens
+                    into <code class="computeroutput"><span class="identifier">sink</span></code>. Use
+                    the <code class="computeroutput"><span class="identifier">delimit</span></code> generator
+                    for delimiting. Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise return <code class="computeroutput"><span class="keyword">false</span></code>.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">bool</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">what</span><span class="special">(</span><span class="identifier">context</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Get information about a Generator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">info</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.generator.type_expressions"></a><h6>
+<a name="id737426"></a>
+            <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">G</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">attribute</span><span class="special"><</span><span class="identifier">Context</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The Generator's attribute.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">G</span></code>
+                    is a Generator, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">G</span><span class="special">::</span><span class="identifier">properties</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    A <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span></code> (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Integral Constant</a>) holding a value from the <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generator_properties</span></code> enumeration.
+                    The default value is <code class="computeroutput"><span class="identifier">generator_properties</span><span class="special">::</span><span class="identifier">no_properties</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.generator.postcondition"></a><h6>
+<a name="id737692"></a>
+            <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.postcondition">Postcondition</a>
+          </h6>
+<p>
+            Upon return from <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">generate</span></code> the following post conditions
+            should hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              On successful generation, <code class="computeroutput"><span class="identifier">sink</span></code>
+              receives the generated characters/tokens sequence.
+            </li>
+<li class="listitem">
+              No pre-delimits: <code class="computeroutput"><span class="identifier">delimit</span></code>
+              characters/tokens will not be emitted in front of any other output.
+            </li>
+<li class="listitem">
+              The attribute <code class="computeroutput"><span class="identifier">attrib</span></code>
+              has not been modified.
+            </li>
+</ul></div>
+<a name="spirit.karma.reference.generator_concepts.generator.models"></a><h6>
+<a name="id737761"></a>
+            <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.models">Models</a>
+          </h6>
+<p>
+            All generators in <span class="emphasis"><em>Spirit.Karma</em></span> are models of the
+            <span class="emphasis"><em>Generator</em></span> concept.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitivegenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,217 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>NaryGenerator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="prev" href="binarygenerator.html" title="BinaryGenerator">
+<link rel="next" href="../karma_basics.html" title="Basics">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../karma_basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="NaryGenerator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.generator_concepts.narygenerator"></a><a class="link" href="narygenerator.html" title="NaryGenerator">NaryGenerator</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.description"></a><h6>
+<a name="id744466"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>NaryGenerator</em></span> is a composite generator that has
+            one or more subjects. The NaryGenerator allows its subjects to be treated
+            in the same way as a single instance of a <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a> following the Composite
+            Design Pattern.
+          </p>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.refinement_of"></a><h6>
+<a name="id744497"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+                A NaryGenerator.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dd><p>
+                A NaryGenerator type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.valid_expressions"></a><h6>
+<a name="id744574"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>, for any NaryGenerator
+            the following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">elements</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The tuple of elements.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    A Boost.Fusion
+                    Sequence of <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a> types.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.type_expressions"></a><h6>
+<a name="id744694"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">elements_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Elements tuple type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_nary_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">G</span></code>
+                    is a NaryGenerator, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.invariants"></a><h6>
+<a name="id744861"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.invariants">Invariants</a>
+          </h6>
+<p>
+            For each element, <code class="computeroutput"><span class="identifier">E</span></code>,
+            in any NaryGenerator, <code class="computeroutput"><span class="identifier">G</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.karma.reference.generator_concepts.narygenerator.models"></a><h6>
+<a name="id744946"></a>
+            <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.models">Models</a>
+          </h6>
+<p>
+            The following generators conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<a class="link" href="../operator/sequence.html" title="Sequences (a << b)">sequence (<code class="computeroutput"><span class="special"><<</span></code>)</a>,
+            </li>
+<li class="listitem">
+<a class="link" href="../operator/alternative.html" title="Alternative (a | b)">alternative
+              (<code class="computeroutput"><span class="special">|</span></code>)</a>.
+            </li>
+</ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to models of NaryGenerator
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../karma_basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>PrimitiveGenerator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="prev" href="generator.html" title="Generator">
+<link rel="next" href="unarygenerator.html" title="UnaryGenerator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unarygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="PrimitiveGenerator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator"></a><a class="link" href="primitivegenerator.html" title="PrimitiveGenerator">PrimitiveGenerator</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator.description"></a><h6>
+<a name="id737803"></a>
+            <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>PrimitiveGenerator</em></span> is the most basic building block
+            that the client uses to build more complex generators.
+          </p>
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of"></a><h6>
+<a name="id737824"></a>
+            <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit"></a><h6>
+<a name="id737857"></a>
+            <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit">Post-delimit</a>
+          </h6>
+<p>
+            Before exiting the <code class="computeroutput"><span class="identifier">generate</span></code>
+            member function, a PrimitiveGenerator is required to do a post-delimit.
+            This will generate a single delimiting character/token sequence. Only
+            PrimitiveGenerator's are required to perform this post-delimit. This
+            is typically carried out through a call to <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit_out</span></code>:
+          </p>
+<pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit_out</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">delimit</span><span class="special">);</span>
+</pre>
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions"></a><h6>
+<a name="id737930"></a>
+            <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_primitive_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">G</span></code>,
+                    is a PrimitiveGenerator, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.primitivegenerator.models"></a><h6>
+<a name="id738065"></a>
+            <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.models">Models</a>
+          </h6>
+<p>
+            The following generators conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<a class="link" href="../auxiliary/eol.html" title="End of Line (eol)"><code class="computeroutput"><span class="identifier">eol</span></code></a> ,
+            </li>
+<li class="listitem">
+<a class="link" href="../auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a>,
+            </li>
+<li class="listitem">
+<a class="link" href="../numeric.html" title="Numeric">Numeric generators</a>,
+            </li>
+<li class="listitem">
+<a class="link" href="../char/char_generator.html" title="Character Generators (char_, lit)">Character
+              generators</a>.
+            </li>
+</ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to <span class="emphasis"><em>PrimitiveGenerator</em></span>
+            models here.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unarygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,251 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>UnaryGenerator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../generator_concepts.html" title="Generator Concepts">
+<link rel="prev" href="primitivegenerator.html" title="PrimitiveGenerator">
+<link rel="next" href="binarygenerator.html" title="BinaryGenerator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitivegenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="UnaryGenerator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.generator_concepts.unarygenerator"></a><a class="link" href="unarygenerator.html" title="UnaryGenerator">UnaryGenerator</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.description"></a><h6>
+<a name="id743038"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>UnaryGenerator</em></span> is a composite generator that has
+            a single subject. The UnaryGenerator may change the behavior of its subject
+            following the Delegate Design Pattern.
+          </p>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.refinement_of"></a><h6>
+<a name="id743059"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+                A UnaryGenerator.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dd><p>
+                A UnaryGenerator type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions"></a><h6>
+<a name="id743135"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>, for any UnaryGenerator
+            the following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">subject</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Subject generator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="generator.html" title="Generator"><code class="computeroutput"><span class="identifier">Generator</span></code></a>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.type_expressions"></a><h6>
+<a name="id743251"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">G</span><span class="special">::</span><span class="identifier">subject_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The subject generator type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_unary_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">G</span></code>
+                    is a UnaryGenerator, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.invariants"></a><h6>
+<a name="id743416"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.invariants">Invariants</a>
+          </h6>
+<p>
+            For any UnaryGenerator, <code class="computeroutput"><span class="identifier">G</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.karma.reference.generator_concepts.unarygenerator.models"></a><h6>
+<a name="id743501"></a>
+            <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.models">Models</a>
+          </h6>
+<p>
+            The following generators conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<a class="link" href="../operator/kleene.html" title="Kleene Star (*a)">Kleene Star
+              (unary <code class="computeroutput"><span class="special">*</span></code>)</a>,
+            </li>
+<li class="listitem">
+<a class="link" href="../operator/plus.html" title="Plus (+a)">plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a> operator,
+            </li>
+<li class="listitem">
+<a class="link" href="../operator/optional.html" title="Optional (-a)">optional (unary
+              <code class="computeroutput"><span class="special">-</span></code>)</a> operator,
+            </li>
+<li class="listitem">
+<a class="link" href="../operator/and_predicate.html" title="And Predicate (&a)">and predicate
+              (unary <code class="computeroutput"><span class="special">&</span></code>)</a> and
+              <a class="link" href="../operator/not_predicate.html" title="Not Predicate (!a)">not predicate
+              (unary <code class="computeroutput"><span class="special">!</span></code>)</a> operators,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">left_align</span></code></a>, <a class="link" href="../directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">center</span></code></a>, and <a class="link" href="../directive/alignment.html" title="Alignment Directives (left_align[], center[], right_align[])"><code class="computeroutput"><span class="identifier">right_align</span></code></a> directives,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/repeat.html" title="Repetition Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a> directive,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"><code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+              directive,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/delimit.html" title="Directives Controlling Automatic Delimiting (verbatim[], delimit[])"><code class="computeroutput"><span class="identifier">delimit</span></code></a> directive,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])"><code class="computeroutput"><span class="identifier">lower</span></code></a> and <a class="link" href="../directive/upperlower.html" title="Directives Controlling Case Sensitivity (upper[], lower[])"><code class="computeroutput"><span class="identifier">upper</span></code></a> directives,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/maxwidth.html" title="Controlling the Maximum Field Wield (maxwidth[])"><code class="computeroutput"><span class="identifier">maxwidth</span></code></a> directive,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+              directive,
+            </li>
+<li class="listitem">
+<a class="link" href="../directive/omit.html" title="Consume Attribute (omit[])"><code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>
+              directive.
+            </li>
+</ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to models of UnaryGenerator
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitivegenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,249 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basics</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="generator_concepts/narygenerator.html" title="NaryGenerator">
+<link rel="next" href="char.html" title="Char">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generator_concepts/narygenerator.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Basics">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.karma_basics"></a><a class="link" href="karma_basics.html" title="Basics"> Basics</a>
+</h4></div></div></div>
+<a name="spirit.karma.reference.karma_basics.lazy_argument"></a><h6>
+<a name="id745021"></a>
+          <a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+          Argument</a>
+        </h6>
+<p>
+          Some generators (e.g. primitives and non-terminals) may take in additional
+          attributes. Such generators take the form:
+        </p>
+<pre class="programlisting"><span class="identifier">g</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,...</span> <span class="identifier">aN</span><span class="special">)</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">g</span></code> is a parser. Each
+          of the arguments (a1...aN) can either be an immediate value, or a function,
+          <code class="computeroutput"><span class="identifier">f</span></code>, with signature:
+        </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">T</span></code>, the function's
+          return value, is compatible with the argument type expected and <code class="computeroutput"><span class="identifier">Context</span></code> is the generators's Context type
+          (The first argument is <code class="computeroutput"><span class="identifier">unused</span></code>
+          to make the <code class="computeroutput"><span class="identifier">Context</span></code> the
+          second argument. This is done for uniformity with <a class="link" href="../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
+          Actions</a>).
+        </p>
+<a name="spirit.karma.reference.karma_basics.character_encoding_namespace"></a><h6>
+<a name="id745161"></a>
+          <a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+          Encoding Namespace</a>
+        </h6>
+<p>
+          Some generators need to know which character set a <code class="computeroutput"><span class="keyword">char</span></code>
+          or <code class="computeroutput"><span class="keyword">wchar_t</span></code> is operating on.
+          For example, the <code class="computeroutput"><span class="identifier">alnum</span></code>
+          generator works differently with ISO8859.1 and ASCII encodings. Where necessary,
+          Spirit encodes (tags) the generator with the character set.
+        </p>
+<p>
+          We have a namespace for each character set Spirit will be supporting. That
+          includes <code class="computeroutput"><span class="identifier">ascii</span></code>, <code class="computeroutput"><span class="identifier">iso8859_1</span></code>, <code class="computeroutput"><span class="identifier">standard</span></code>
+          and <code class="computeroutput"><span class="identifier">standard_wide</span></code> (and
+          in the future, <code class="computeroutput"><span class="identifier">unicode</span></code>).
+          In each of the character encoding namespaces, we place tagged versions
+          of generators such as <code class="computeroutput"><span class="identifier">alnum</span></code>,
+          <code class="computeroutput"><span class="identifier">space</span></code> etc.
+        </p>
+<p>
+          Example:
+        </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span> <span class="comment">// use the ASCII space generator
+</span></pre>
+<p>
+          Namespaces:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::standard
+          </li>
+<li class="listitem">
+            boost::spirit::standard_wide
+          </li>
+</ul></div>
+<p>
+          For ease of use, the components in this namespaces are also brought into
+          the karma sub-namespaces with the same names:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::karma::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::karma::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::karma::standard
+          </li>
+<li class="listitem">
+            boost::spirit::karma::standard_wide
+          </li>
+</ul></div>
+<a name="spirit.karma.reference.karma_basics.examples"></a><h6>
+<a name="id746915"></a>
+          <a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.examples">Examples</a>
+        </h6>
+<p>
+          All sections in the reference present some real world examples. The examples
+          use a common test harness to keep the example code as minimal and direct
+          to the point as possible. The test harness is presented below.
+        </p>
+<p>
+          Some includes:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Our test functions:
+        </p>
+<p>
+          This one tests the generators without attributes.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          These test the generators with one or more user supplied attributes.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T1</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr1</span><span class="special">,</span> 
+    <span class="identifier">T2</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr2</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr1</span><span class="special">,</span> <span class="identifier">attr2</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.karma.reference.karma_basics.models"></a><h6>
+<a name="id748286"></a>
+          <a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.models">Models</a>
+        </h6>
+<p>
+          Predefined models include:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            any literal string, e.g. "Hello, World",
+          </li>
+<li class="listitem">
+            a pointer/reference to a null-terminated array of characters
+          </li>
+<li class="listitem">
+            a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">Char</span><span class="special">></span></code>
+</li>
+</ul></div>
+<p>
+          The namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code> is open for users to provide their
+          own specializations.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="generator_concepts/narygenerator.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Numeric</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="string/string.html" title="String (string, lit)">
+<link rel="next" href="numeric/unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string/string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/unsigned_int.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Numeric">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.numeric"></a><a class="link" href="numeric.html" title="Numeric"> Numeric</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="numeric/unsigned_int.html"> Unsigned
+          Integer Number Generators (<code class="computeroutput"><span class="identifier">uint_</span></code>,
+          etc.)</a></span></dt>
+<dt><span class="section"><a href="numeric/signed_int.html"> Signed
+          Integer Number Generators (<code class="computeroutput"><span class="identifier">int_</span></code>,
+          etc.)</a></span></dt>
+<dt><span class="section"><a href="numeric/real_number.html"> Real
+          Number Generators (<code class="computeroutput"><span class="identifier">float_</span></code>,
+          <code class="computeroutput"><span class="identifier">double_</span></code>, etc.)</a></span></dt>
+</dl></div>
+<p>
+          The library includes a couple of predefined objects for generating signed
+          and unsigned integers and real numbers. These generators are fully parametric.
+          Most of the important aspects of numeric generation can be finely adjusted
+          to suit. This includes the radix base, the exponent, the fraction etc.
+          Policies control the real number generators' behavior. There are some predefined
+          policies covering the most common real number formats but the user can
+          supply her own when needed.
+        </p>
+<p>
+          The numeric parsers are fine tuned (employing loop unrolling and extensive
+          template metaprogramming) with exceptional performance that rivals the
+          low level C functions such as <code class="computeroutput"><span class="identifier">ltoa</span></code>,
+          <code class="computeroutput"><span class="identifier">ssprintf</span></code>, and <code class="computeroutput"><span class="identifier">_gcvt</span></code>. Benchmarks reveal up to 2X speed
+          over the C counterparts (see here: <a class="link" href="../performance_measurements/numeric_performance.html" title="Performance of Numeric Generators">Performance
+          of Numeric Generators</a>). This goes to show that you can write extremely
+          tight generic C++ code that rivals, if not surpasses C.
+        </p>
+<a name="spirit.karma.reference.numeric.module_header"></a><h6>
+<a name="id761427"></a>
+          <a class="link" href="numeric.html#spirit.karma.reference.numeric.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string/string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/unsigned_int.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,1240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Real Number Generators (float_, double_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="signed_int.html" title="Signed Integer Number Generators (int_, etc.)">
+<link rel="next" href="../stream.html" title="Stream">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signed_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../stream.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Real Number Generators (float_, double_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.numeric.real_number"></a><a class="link" href="real_number.html" title="Real Number Generators (float_, double_, etc.)"> Real
+          Number Generators (<code class="computeroutput"><span class="identifier">float_</span></code>,
+          <code class="computeroutput"><span class="identifier">double_</span></code>, etc.)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.numeric.real_number.description"></a><h6>
+<a name="id772438"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">real_generator</span></code> can
+            generate real numbers of arbitrary length and size limited by its template
+            parameter, <code class="computeroutput"><span class="identifier">Num</span></code>. The numeric
+            base type <code class="computeroutput"><span class="identifier">Num</span></code> can be
+            a user defined numeric type such as fixed_point (fixed point reals) and
+            bignum (unlimited precision numbers) as long as the type follows certain
+            expression requirements (for more information about the requirements,
+            see <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.additional_requirements">below</a>).
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">lit</span></code> is reused by the
+              <a class="link" href="../string.html" title="String">String Generators</a>,
+              the <a class="link" href="../char.html" title="Char">Character Generators</a>,
+              and the Numeric Generators. In general, a char generator is created
+              when you pass in a character, a string generator is created when you
+              pass in a string, and a numeric generator is created when you use a
+              numeric literal.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.real_number.header"></a><h6>
+<a name="id772505"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/real.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_real</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.numeric.real_number.namespace"></a><h6>
+<a name="id772579"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::karma::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">float_</span> <span class="comment">// alias:
+                    boost::spirit::karma::float_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">double_</span> <span class="comment">//
+                    alias: boost::spirit::karma::double_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_double</span> <span class="comment">//
+                    alias: boost::spirit::karma::long_double</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.real_number.synopsis"></a><h6>
+<a name="id772772"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Num</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">RealPolicies</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">real_generator</span><span class="special">;</span>
+</pre>
+<a name="spirit.karma.reference.numeric.real_number.template_parameters"></a><h6>
+<a name="id772840"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The type of the real number to generate
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RealPolicies</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The policies to use while converting the real number
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">Num</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            For more information about the type <code class="computeroutput"><span class="identifier">RealPolicies</span></code>
+            see <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policies">below</a>).
+          </p>
+<a name="spirit.karma.reference.numeric.real_number.model_of"></a><h6>
+<a name="id772996"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dd><p>
+                Numeric literal, any real number value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a real number value of type <code class="computeroutput"><span class="identifier">Num</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Num</span></code></span></dt>
+<dd><p>
+                Type of <code class="computeroutput"><span class="identifier">num</span></code>: any
+                real number type
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.numeric.real_number.expression_semantics"></a><h6>
+<a name="id773098"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the real number literal <code class="computeroutput"><span class="identifier">num</span></code>
+                    using the default formatting (no trailing zeros, <code class="computeroutput"><span class="identifier">fixed</span></code> representation for numbers
+                    <code class="computeroutput"><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span>
+                    <span class="special"><=</span> <span class="number">1e5</span>
+                    <span class="special">&&</span> <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">></span>
+                    <span class="number">1e-3</span></code>, scientific representation
+                    otherwise, 3 fractional digits, sign is only printed for negative
+                    literals). This generator never fails (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">float_</span>
+<span class="identifier">double_</span>
+<span class="identifier">long_double</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the real number provided by a mandatory attribute using
+                    the default formatting (no trailing zeros, <code class="computeroutput"><span class="identifier">fixed</span></code>
+                    representation for numbers <code class="computeroutput"><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special"><=</span>
+                    <span class="number">1e5</span> <span class="special">&&</span>
+                    <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span>
+                    <span class="special">></span> <span class="number">1e-3</span></code>,
+                    scientific representation otherwise, 3 fractional digits, sign
+                    is only printed for negative literals). This generator never
+                    fails (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">float_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">double_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">long_double</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the real point number provided by the immediate literal
+                    value the generator is initialized from using the default formatting
+                    (no trailing zeros, <code class="computeroutput"><span class="identifier">fixed</span></code>
+                    representation for numbers <code class="computeroutput"><span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special"><=</span>
+                    <span class="number">1e5</span> <span class="special">&&</span>
+                    <span class="identifier">fabs</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span>
+                    <span class="special">></span> <span class="number">1e-3</span></code>,
+                    scientific representation otherwise, 3 fractional digits, sign
+                    is only printed for negative literals). If this generator has
+                    an associated attribute it succeeds only as long as the attribute
+                    is equal to the immediate literal (except if the underlying output
+                    stream reports an error). Otherwise this generator fails and
+                    does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            All generators listed in the table above (except <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>) are predefined specializations of the
+            <code class="computeroutput"><span class="identifier">real_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">RealPolicies</span><span class="special">></span></code>
+            basic real number generator type described below. It is possible to directly
+            use this type to create real number generators using a wide range of
+            formatting options.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">real_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">RealPolicies</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the real number of type <code class="computeroutput"><span class="identifier">Num</span></code>
+                    provided by a mandatory attribute using the specified <code class="computeroutput"><span class="identifier">RealPolicies</span></code>. This generator
+                    never fails (except if the underlying output stream reports an
+                    error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.real_number.additional_requirements"></a><h6>
+<a name="id773725"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.additional_requirements">Additional
+            Requirements</a>
+          </h6>
+<p>
+            The following list enumerate the requirements which must be met in order
+            to use a certain type <code class="computeroutput"><span class="identifier">Num</span></code>
+            to instantiate a <code class="computeroutput"><span class="identifier">real_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Policies</span><span class="special">></span></code>.
+          </p>
+<p>
+            In order to be usable as the first template parameter for <code class="computeroutput"><span class="identifier">real_generator</span><span class="special"><></span></code>
+            the type <code class="computeroutput"><span class="identifier">Num</span></code> must have
+            defined:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              comparison operators for: <code class="computeroutput"><span class="special"><</span></code>,
+              <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">==</span></code>,
+              <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+              and <code class="computeroutput"><span class="special">>=</span></code>
+</li>
+<li class="listitem">
+              numeric operators for: <code class="computeroutput"><span class="special">+</span></code>,
+              <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+              <code class="computeroutput"><span class="special">*</span></code>, and <code class="computeroutput"><span class="special">%</span></code>
+</li>
+<li class="listitem">
+              functions implementing the interface and the semantics of: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fmod</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">log10</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">lround</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ltrunc</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">modf</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">floor</span></code>, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ceil</span></code>.
+              These need to be defined in a way so that they will be found using
+              argument dependent lookup (ADL).
+            </li>
+<li class="listitem">
+              a valid specialization of the type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">Num</span><span class="special">></span></code> allowing for numeric property inspection.
+            </li>
+</ul></div>
+<a name="spirit.karma.reference.numeric.real_number.attributes"></a><h6>
+<a name="id774034"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">float_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">float</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">float_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">float_</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">double_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_double</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">real_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Policies</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">real_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Policies</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.real_number.real_number_formatting_policies"></a><h6>
+<a name="id774494"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policies">Real
+            Number Formatting Policies</a>
+          </h6>
+<p>
+            If special formatting of a real number is needed, overload the policy
+            class <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">Num</span><span class="special">></span></code>
+            and use it as a template parameter to the <code class="computeroutput"><span class="identifier">real_generator</span><span class="special"><></span></code> real number generator. For instance:
+          </p>
+<pre class="programlisting"><span class="comment">// define a new real number formatting policy
+</span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Num</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">scientific_policy</span> <span class="special">:</span> <span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">Num</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="comment">// we want the numbers always to be in scientific format
+</span>    <span class="keyword">static</span> <span class="keyword">int</span> <span class="identifier">floatfield</span><span class="special">(</span><span class="identifier">Num</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">fmtflags</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="comment">// define a new generator type based on the new policy
+</span><span class="keyword">typedef</span> <span class="identifier">real_generator</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">scientific_policy</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span> <span class="identifier">science_type</span><span class="special">;</span>
+<span class="identifier">science_type</span> <span class="keyword">const</span> <span class="identifier">scientific</span> <span class="special">=</span> <span class="identifier">science_type</span><span class="special">();</span>
+
+<span class="comment">// use the new generator 
+</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">science_type</span><span class="special">(),</span> <span class="number">1.0</span><span class="special">);</span>  <span class="comment">// will output: 1.0e00
+</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">scientific</span><span class="special">,</span> <span class="number">0.1</span><span class="special">);</span>      <span class="comment">// will output: 1.0e-01
+</span></pre>
+<p>
+            The template parameter <code class="computeroutput"><span class="identifier">Num</span></code>
+            should be the type to be formatted using the overloaded policy type.
+            At the same time <code class="computeroutput"><span class="identifier">Num</span></code>
+            will be used as the attribute type of the created real number generator.
+          </p>
+<a name="spirit.karma.reference.numeric.real_number.real_number_formatting_policy_expression_semantics"></a><h6>
+<a name="id774848"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policy_expression_semantics">Real
+            Number Formatting Policy Expression Semantics</a>
+          </h6>
+<p>
+            A real number formatting policy should expose the following variables
+            and functions:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Inserter</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Policies</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">call</span> <span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span>
+  <span class="special">,</span> <span class="identifier">Policies</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This is the main function used to generate the output for a real
+                    number. It is called by the real generator in order to perform
+                    the conversion. In theory all of the work can be implemented
+                    here, but it is the easiest to use existing functionality provided
+                    by the type specified by the template parameter <code class="computeroutput"><span class="identifier">Inserter</span></code>. The default implementation
+                    of this functions is: 
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Inserter</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Policies</span><span class="special">></span>
+<span class="keyword">static</span> <span class="keyword">bool</span>
+<span class="identifier">call</span> <span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Policies</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">return</span> <span class="identifier">Inserter</span><span class="special">::</span><span class="identifier">call_n</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">p</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the real
+                    number to convert
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span></code>: the instance
+                    of the policy type used to instantiate this real number generator.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">force_sign</span><span class="special">(</span><span class="identifier">Num</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The default behavior is to not to require generating a sign.
+                    If the function <code class="computeroutput"><span class="identifier">force_sign</span><span class="special">()</span></code> returns true, then all generated
+                    numbers will have a sign (<code class="computeroutput"><span class="char">'+'</span></code>
+                    or <code class="computeroutput"><span class="char">'-'</span></code>, zeros will
+                    have a space instead of a sign).
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code> is the real
+                    number to output. This can be used to adjust the required behavior
+                    depending on the value of this number.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">trailing_zeros</span><span class="special">(</span><span class="identifier">Num</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Return whether trailing zero digits have to be emitted in the
+                    fractional part of the output. If set, this flag instructs the
+                    real number generator to emit trailing zeros up to the required
+                    precision digits (as returned by the <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> function).
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code> is the real
+                    number to output. This can be used to adjust the required behavior
+                    depending on the value of this number.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">int</span> <span class="identifier">floatfield</span><span class="special">(</span><span class="identifier">Num</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Decide, which representation type to use in the generated output.
+                  </p>
+                  <p>
+                    By default all numbers having an absolute value of zero or in
+                    between <code class="computeroutput"><span class="number">0.001</span></code> and
+                    <code class="computeroutput"><span class="number">100000</span></code> will be generated
+                    using the fixed format, all others will be generated using the
+                    scientific representation.
+                  </p>
+                  <p>
+                    The <code class="computeroutput"><span class="identifier">trailing_zeros</span><span class="special">()</span></code> can be used to force the output
+                    of trailing zeros in the fractional part up to the number of
+                    digits returned by the <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> member function. The default
+                    is not to generate the trailing zeros.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the real
+                    number to output. This can be used to adjust the formatting flags
+                    depending on the value of this number.
+                  </p>
+                  <p>
+                    The return value has to be either <code class="computeroutput"><span class="identifier">fmtflags</span><span class="special">::</span><span class="identifier">scientific</span></code>
+                    (generate real number values in scientific notation) or <code class="computeroutput"><span class="identifier">fmtflags</span><span class="special">::</span><span class="identifier">fixed</span></code> (generate real number
+                    values in fixed-point notation).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">(</span><span class="identifier">Num</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Return the maximum number of decimal digits to generate in the
+                    fractional part of the output.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the real
+                    number to output. This can be used to adjust the required precision
+                    depending on the value of this number. If the trailing zeros
+                    flag is specified the fractional part of the output will be 'filled'
+                    with zeros, if appropriate.
+                  </p>
+                  <p>
+                    <span class="bold"><strong>Note:</strong></span> If the trailing_zeros
+                    flag is not in effect additional semantics apply. See the description
+                    for the <code class="computeroutput"><span class="identifier">fraction_part</span><span class="special">()</span></code> function below. Moreover, this
+                    precision will be limited to the value of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits10</span>
+                    <span class="special">+</span> <span class="number">1</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">bool</span> <span class="identifier">ForceSign</span><span class="special">,</span> 
+    <span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">integer_part</span><span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span>
+  <span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">sign</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">force_sign</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called to generate the integer part of the real
+                    number.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the absolute
+                    value of the integer part of the real number to convert (always
+                    non-negative)
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sign</span></code>: is the
+                    sign of the overall real number to convert.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">force_sign</span></code>: is
+                    a flag whether a sign has to be generated even for non- negative
+                    numbers (this is the same as has been returned from the function
+                    <code class="computeroutput"><span class="identifier">force_sign</span><span class="special">()</span></code>
+                    described above)
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">dot</span><span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span><span class="special">,</span>
+  <span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called to generate the decimal point.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: The fractional
+                    part of the real number to convert. Note that this number is
+                    scaled such, that it represents the number of units which correspond
+                    to the value returned from the <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> function earlier. I.e. a fractional
+                    part of <code class="computeroutput"><span class="number">0.01234</span></code> is
+                    represented as <code class="computeroutput"><span class="number">1234</span></code>
+                    when the function <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> returned <code class="computeroutput"><span class="number">5</span></code>.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">precision</span></code>: The
+                    number of digits to emit as returned by the function <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code>
+                    described above
+                  </p>
+                  <p>
+                    This is given to allow to decide, whether a decimal point has
+                    to be generated at all.
+                  </p>
+                  <p>
+                    <span class="bold"><strong>Note:</strong></span> If the <code class="computeroutput"><span class="identifier">trailing_zeros</span></code>
+                    flag is not in effect additional comments apply. See the description
+                    for the <code class="computeroutput"><span class="identifier">fraction_part</span><span class="special">()</span></code> function below.
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">fraction_part</span><span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">adjprec</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">precision</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called to generate the fractional part of the
+                    number.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: The fractional
+                    part of the real number to convert. Note that this number is
+                    scaled such, that it represents the number of units which correspond
+                    to the value returned from the <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> function earlier. I.e. a fractional
+                    part of <code class="computeroutput"><span class="number">0.01234</span></code> is
+                    represented as <code class="computeroutput"><span class="number">1234</span></code>
+                    when the function <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> returned <code class="computeroutput"><span class="number">5</span></code>.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">adjprec</span></code>: The
+                    corrected number of digits to emit (see note below)
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">precision</span></code>: The
+                    number of digits to emit as returned by the function <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code>
+                    described above
+                  </p>
+                  <p>
+                    <span class="bold"><strong>Note:</strong></span> If <code class="computeroutput"><span class="identifier">trailing_zeros</span><span class="special">()</span></code> returns <code class="computeroutput"><span class="keyword">false</span></code>
+                    the <code class="computeroutput"><span class="identifier">adjprec</span></code> parameter
+                    will have been corrected from the value the <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> function returned earlier (defining
+                    the maximal number of fractional digits) in the sense, that it
+                    takes into account trailing zeros. I.e. a real number <code class="computeroutput"><span class="number">0.0123</span></code> and a value of <code class="computeroutput"><span class="number">5</span></code> returned from <code class="computeroutput"><span class="identifier">precision</span><span class="special">()</span></code> will result in:
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">trailing_zeros</span><span class="special">()</span></code> returned <code class="computeroutput"><span class="keyword">false</span></code>:
+                    <code class="computeroutput"><span class="identifier">n</span></code> will be <code class="computeroutput"><span class="number">123</span></code>, and <code class="computeroutput"><span class="identifier">adjprec</span></code>
+                    will be <code class="computeroutput"><span class="number">4</span></code> (as we
+                    need to print <code class="computeroutput"><span class="number">0123</span></code>)
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">trailing_zeros</span><span class="special">()</span></code> returned <code class="computeroutput"><span class="keyword">true</span></code>:
+                    <code class="computeroutput"><span class="identifier">n</span></code> will be <code class="computeroutput"><span class="number">1230</span></code>, and <code class="computeroutput"><span class="identifier">adjprec</span></code>
+                    will be <code class="computeroutput"><span class="number">5</span></code> (as we
+                    need to print <code class="computeroutput"><span class="number">01230</span></code>)
+                  </p>
+                  <p>
+                    The missing preceding zeros in the fractional part have to be
+                    supplied by the implementation of this policy function.
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">CharEncoding</span><span class="special">,</span> 
+    <span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">exponent</span><span class="special">(</span>
+    <span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="keyword">long</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called to generate the exponential part of the
+                    number (this is called only if the <code class="computeroutput"><span class="identifier">floatfield</span><span class="special">()</span></code> function returned the <code class="computeroutput"><span class="identifier">fmtflags</span><span class="special">::</span><span class="identifier">scientific</span></code> flag).
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: The (signed)
+                    exponential part of the real number to convert.
+                  </p>
+                  <p>
+                    The template parameters <code class="computeroutput"><span class="identifier">CharEncoding</span></code>
+                    and <code class="computeroutput"><span class="identifier">Tag</span></code> are either
+                    of the type <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                    or describe the character class and conversion to be applied
+                    to any output possibly influenced by either the <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>
+                    or <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>
+                    directives.
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">CharEncoding</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">nan</span> <span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span>
+  <span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">force_sign</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called whenever the number to print is a non-normal
+                    real number of type <code class="computeroutput"><span class="identifier">NaN</span></code>.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the (signed)
+                    real number to convert
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">force_sign</span></code>: is
+                    a flag whether a sign has to be generated even for non- negative
+                    numbers (this is the same as has been returned from the function
+                    <code class="computeroutput"><span class="identifier">force_sign</span><span class="special">()</span></code>
+                    described above)
+                  </p>
+                  <p>
+                    The template parameters <code class="computeroutput"><span class="identifier">CharEncoding</span></code>
+                    and <code class="computeroutput"><span class="identifier">Tag</span></code> are either
+                    of the type <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                    or describe the character class and conversion to be applied
+                    to any output possibly influenced by either the <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>
+                    or <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>
+                    directives.
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">CharEncoding</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">inf</span> <span class="special">(</span><span class="identifier">OutputIterator</span><span class="special">&</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">Num</span> <span class="identifier">n</span>
+  <span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">force_sign</span><span class="special">);</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    This function is called whenever the number to print is a non-normal
+                    real number of type <code class="computeroutput"><span class="identifier">Inf</span></code>.
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sink</span></code>: is the
+                    output iterator to use for generation
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span></code>: is the (signed)
+                    real number to convert
+                  </p>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">force_sign</span></code>: is
+                    a flag whether a sign has to be generated even for non- negative
+                    numbers (this is the same as has been returned from the function
+                    <code class="computeroutput"><span class="identifier">force_sign</span><span class="special">()</span></code>
+                    described above)
+                  </p>
+                  <p>
+                    The template parameters <code class="computeroutput"><span class="identifier">CharEncoding</span></code>
+                    and <code class="computeroutput"><span class="identifier">Tag</span></code> are either
+                    of the type <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                    or describe the character class and conversion to be applied
+                    to any output possibly influenced by either the <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>
+                    or <code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>
+                    directives.
+                  </p>
+                  <p>
+                    The return value defines the outcome of the whole generator.
+                    If it is <code class="computeroutput"><span class="keyword">false</span></code>,
+                    no further output is generated, immediatly returning <code class="computeroutput"><span class="keyword">false</span></code> from the calling <code class="computeroutput"><span class="identifier">real_generator</span></code> as well. If
+                    it is <code class="computeroutput"><span class="keyword">true</span></code>, normal
+                    output generation continues.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The easiest way to implement a proper real number formatting policy
+              is to derive a new type from the the type <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><></span></code> while overriding the aspects
+              of the formatting which need to be changed.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.real_number.complexity"></a><h6>
+<a name="id778427"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where <code class="computeroutput"><span class="identifier">N</span></code> is
+                the number of digits needed to represent the generated real number.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.numeric.real_number.example"></a><h6>
+<a name="id778458"></a>
+            <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an <code class="computeroutput"><span class="identifier">double_</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="number">2.0</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">(</span><span class="number">2</span><span class="special">));</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">(</span><span class="number">2.0</span><span class="special">),</span> <span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">(</span><span class="number">2.0</span><span class="special">),</span> <span class="number">3.0</span><span class="special">);</span>    <span class="comment">// fails (as 2.0 != 3.0)!
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"-2.0"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">,</span> <span class="special">-</span><span class="number">2.0</span><span class="special">);</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.234e05"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">,</span> <span class="number">1234.0e2</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.234e-06"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">,</span> <span class="number">0.000001234</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="signed_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../stream.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,816 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Signed Integer Number Generators (int_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)">
+<link rel="next" href="real_number.html" title="Real Number Generators (float_, double_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real_number.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Signed Integer Number Generators (int_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.numeric.signed_int"></a><a class="link" href="signed_int.html" title="Signed Integer Number Generators (int_, etc.)"> Signed
+          Integer Number Generators (<code class="computeroutput"><span class="identifier">int_</span></code>,
+          etc.)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.numeric.signed_int.description"></a><h6>
+<a name="id767155"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">int_generator</span></code> can
+            generate signed integers of arbitrary length and size. This is almost
+            the same as the <code class="computeroutput"><span class="identifier">int_generator</span></code>.
+            The only difference is the additional task of generating the <code class="computeroutput"><span class="char">'+'</span></code> or <code class="computeroutput"><span class="char">'-'</span></code>
+            sign preceding the number. The class interface is the same as that of
+            the <code class="computeroutput"><span class="identifier">int_generator</span></code>.
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">int_generator</span></code> generator
+            can be used to emit ordinary primitive C/C++ integers or even user defined
+            scalars such as bigints (unlimited precision integers) as long as the
+            type follows certain expression requirements (for more information about
+            the requirements, see <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.additional_requirements">below</a>).
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">lit</span></code> is reused by the
+              <a class="link" href="../string.html" title="String">String Generators</a>,
+              the <a class="link" href="../char.html" title="Char">Character Generators</a>,
+              and the Numeric Generators. In general, a char generator is created
+              when you pass in a character, a string generator is created when you
+              pass in a string, and a numeric generator is created when you use a
+              numeric literal.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.signed_int.header"></a><h6>
+<a name="id767248"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/int.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.numeric.signed_int.namespace"></a><h6>
+<a name="id767322"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::karma::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">short_</span> <span class="comment">// alias:
+                    boost::spirit::karma::short_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">int_</span> <span class="comment">// alias:
+                    boost::spirit::karma::int_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_</span> <span class="comment">// alias:
+                    boost::spirit::karma::long_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_long</span> <span class="comment">//
+                    alias: boost::spirit::karma::long_long</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">long_long</span></code>
+              and <code class="computeroutput"><span class="identifier">long_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+              are only available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">long</span>
+              <span class="keyword">long</span></code> (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.signed_int.synopsis"></a><h6>
+<a name="id767611"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">T</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span>
+  <span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">force_sign</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_generator</span><span class="special">;</span>
+</pre>
+<a name="spirit.karma.reference.numeric.signed_int.template_parameters"></a><h6>
+<a name="id767695"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The numeric base type of the numeric parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Radix</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The radix base. This can be either 2: binary, 8: octal, 10: decimal
+                    and 16: hexadecimal.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    10
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">force_sign</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If <code class="computeroutput"><span class="keyword">true</span></code>, all numbers
+                    will have a sign (space for zero)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">false</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.signed_int.model_of"></a><h6>
+<a name="id767862"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dd><p>
+                Numeric literal, any signed integer value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a signed integer value of type
+                <code class="computeroutput"><span class="identifier">Num</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Num</span></code></span></dt>
+<dd><p>
+                Type of <code class="computeroutput"><span class="identifier">num</span></code>: any
+                signed integer type
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Radix</span></code></span></dt>
+<dd><p>
+                A constant integer literal specifying the required radix for the
+                output conversion. Valid values are <code class="computeroutput"><span class="number">2</span></code>,
+                <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>,
+                and <code class="computeroutput"><span class="number">16</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">force_sign</span></code></span></dt>
+<dd><p>
+                A constant boolean literal specifying whether the generated number
+                should always have a sign (<code class="computeroutput"><span class="char">'+'</span></code>
+                for positive numbers, <code class="computeroutput"><span class="char">'-'</span></code>
+                for negative numbers and a '<code class="computeroutput"> </code>' for zero).
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.numeric.signed_int.expression_semantics"></a><h6>
+<a name="id768048"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer literal <code class="computeroutput"><span class="identifier">num</span></code>
+                    using the default formatting (radix is 10, sign is only printed
+                    for negative literals). This generator never fails (except if
+                    the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">short_</span>
+<span class="identifier">int_</span>
+<span class="identifier">long_</span>
+<span class="identifier">long_long</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer provided by a mandatory attribute using
+                    the default formatting (radix is 10, sign is only printed for
+                    negative literals). This generator never fails (except if the
+                    underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">short_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">int_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">long_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">long_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer provided by the immediate literal value
+                    the generator is initialized from using the default formatting
+                    (radix is 10, sign is only printed for negative literals). If
+                    this generator has an associated attribute it succeeds only as
+                    long as the attribute is equal to the immediate literal (except
+                    if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            All generators listed in the table above (except <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>) are predefined specializations of the
+            <code class="computeroutput"><span class="identifier">int_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span><span class="special">></span></code>
+            basic integer number generator type described below. It is possible to
+            directly use this type to create integer generators using a wide range
+            of formatting options.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer of type <code class="computeroutput"><span class="identifier">Num</span></code>
+                    provided by a mandatory attribute using the specified <code class="computeroutput"><span class="identifier">Radix</span></code> (possible values are
+                    <code class="computeroutput"><span class="number">2</span></code>, <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>,
+                    and <code class="computeroutput"><span class="number">16</span></code>, the default
+                    value is <code class="computeroutput"><span class="number">10</span></code>). If
+                    <code class="computeroutput"><span class="identifier">force_sign</span></code> is
+                    <code class="computeroutput"><span class="keyword">false</span></code> (the default),
+                    a sign is only printed for negative literals. If <code class="computeroutput"><span class="identifier">force_sign</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>, all numbers will be printed
+                    using a sign, i.e. <code class="computeroutput"><span class="char">'-'</span></code>
+                    for negative numbers, <code class="computeroutput"><span class="char">'+'</span></code>
+                    for positive numbers, and <code class="computeroutput"><span class="char">' '</span></code>
+                    for zeros. This generator never fails (except if the underlying
+                    output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer of type <code class="computeroutput"><span class="identifier">Num</span></code>
+                    provided by the immediate literal value the generator is initialized
+                    from, using the specified <code class="computeroutput"><span class="identifier">Radix</span></code>
+                    (possible values are <code class="computeroutput"><span class="number">2</span></code>,
+                    <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>, and <code class="computeroutput"><span class="number">16</span></code>,
+                    the default value is <code class="computeroutput"><span class="number">10</span></code>).
+                    If <code class="computeroutput"><span class="identifier">force_sign</span></code>
+                    is <code class="computeroutput"><span class="keyword">false</span></code> (the default),
+                    a sign is only printed for negative literals. If <code class="computeroutput"><span class="identifier">force_sign</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>, all numbers will be printed
+                    using a sign, i.e. <code class="computeroutput"><span class="char">'-'</span></code>
+                    for negative numbers, <code class="computeroutput"><span class="char">'+'</span></code>
+                    for positive numbers, and <code class="computeroutput"><span class="char">' '</span></code>
+                    for zeros. If this generator has an associated attribute it succeeds
+                    only as long as the attribute is equal to the immediate literal
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.signed_int.additional_requirements"></a><h6>
+<a name="id768682"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.additional_requirements">Additional
+            Requirements</a>
+          </h6>
+<p>
+            The following lists enumerate the requirements which must be met in order
+            to use a certain type <code class="computeroutput"><span class="identifier">Num</span></code>
+            to instantiate and use a <code class="computeroutput"><span class="identifier">int_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span><span class="special">></span></code>.
+          </p>
+<p>
+            If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">Num</span><span class="special">>::</span><span class="identifier">value</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
+            the type <code class="computeroutput"><span class="identifier">Num</span></code> must have
+            defined:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              comparison operators for: <code class="computeroutput"><span class="special"><</span></code>,
+              <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">==</span></code>,
+              <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+              and <code class="computeroutput"><span class="special">>=</span></code>
+</li>
+<li class="listitem">
+              numeric operators for: <code class="computeroutput"><span class="special">+</span></code>,
+              <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+              <code class="computeroutput"><span class="special">*</span></code>, <code class="computeroutput"><span class="special">%</span></code>,
+              and unary <code class="computeroutput"><span class="special">-</span></code>
+</li>
+</ul></div>
+<p>
+            If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">Num</span><span class="special">>::</span><span class="identifier">value</span></code> is <code class="computeroutput"><span class="keyword">false</span></code>
+            the type <code class="computeroutput"><span class="identifier">Num</span></code> must have
+            defined:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              comparison operators for: <code class="computeroutput"><span class="special"><</span></code>,
+              <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">==</span></code>,
+              <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+              and <code class="computeroutput"><span class="special">>=</span></code>
+</li>
+<li class="listitem">
+              numeric operators for: <code class="computeroutput"><span class="special">+</span></code>,
+              <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+              <code class="computeroutput"><span class="special">*</span></code>, <code class="computeroutput"><span class="special">%</span></code>,
+              and unary <code class="computeroutput"><span class="special">-</span></code>
+</li>
+<li class="listitem">
+              helper functions implementing the interface and the semantics of:
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fmod</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fabs</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">lround</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ltrunc</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">floor</span></code>,
+              and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ceil</span></code>. These need to be defined in
+              a way so that they will be found using argument dependent lookup (ADL).
+            </li>
+</ul></div>
+<a name="spirit.karma.reference.numeric.signed_int.attributes"></a><h6>
+<a name="id769134"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">short_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">short</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">short_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">short</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">int_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>, attribute is
+                    mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">int_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>, attribute is
+                    optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">int_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">force_sign</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.signed_int.complexity"></a><h6>
+<a name="id769690"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where <code class="computeroutput"><span class="identifier">N</span></code> is
+                the number of digits needed to represent the generated integer number
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.numeric.signed_int.example"></a><h6>
+<a name="id771178"></a>
+            <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an <code class="computeroutput"><span class="identifier">int_</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"-2"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(-</span><span class="number">2</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"-2"</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">(-</span><span class="number">2</span><span class="special">));</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"-2"</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">(-</span><span class="number">2</span><span class="special">),</span> <span class="special">-</span><span class="number">2</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">(-</span><span class="number">2</span><span class="special">),</span> <span class="number">3</span><span class="special">);</span>    <span class="comment">// fails (as -2 != 3)!
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"-2"</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">,</span> <span class="special">-</span><span class="number">2</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real_number.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,875 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Unsigned Integer Number Generators (uint_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="../numeric.html" title="Numeric">
+<link rel="next" href="signed_int.html" title="Signed Integer Number Generators (int_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signed_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Unsigned Integer Number Generators (uint_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.numeric.unsigned_int"></a><a class="link" href="unsigned_int.html" title="Unsigned Integer Number Generators (uint_, etc.)"> Unsigned
+          Integer Number Generators (<code class="computeroutput"><span class="identifier">uint_</span></code>,
+          etc.)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.description"></a><h6>
+<a name="id761536"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">uint_generator</span></code> class
+            is the simplest among the members of the numerics package. The <code class="computeroutput"><span class="identifier">uint_generator</span></code> can generate unsigned
+            integers of arbitrary length and size. The <code class="computeroutput"><span class="identifier">uint_generator</span></code>
+            generator can be used to generate ordinary primitive C/C++ integers or
+            even user defined scalars such as bigints (unlimited precision integers)
+            as long as the type follows certain expression requirements (for more
+            information about the requirements, see <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.additional_requirements">below</a>)).
+            The <code class="computeroutput"><span class="identifier">uint_generator</span></code> is
+            a template class. Template parameters fine tune its behavior.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">lit</span></code> is reused by the
+              <a class="link" href="../string.html" title="String">String Generators</a>,
+              the <a class="link" href="../char.html" title="Char">Character Generators</a>,
+              and the Numeric Generators. In general, a char generator is created
+              when you pass in a character, a string generator is created when you
+              pass in a string, and a numeric generator is created when you use a
+              numeric literal.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.header"></a><h6>
+<a name="id761610"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/uint.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_uint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.numeric.unsigned_int.namespace"></a><h6>
+<a name="id761685"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::karma::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">bin</span> <span class="comment">// alias:
+                    boost::spirit::karma::bin</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">oct</span> <span class="comment">// alias:
+                    boost::spirit::karma::oct</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">hex</span> <span class="comment">// alias:
+                    boost::spirit::karma::hex</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ushort_</span> <span class="comment">//
+                    alias: boost::spirit::karma::ushort_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_</span> <span class="comment">// alias:
+                    boost::spirit::karma::ulong_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">uint_</span> <span class="comment">// alias:
+                    boost::spirit::karma::uint_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_long</span> <span class="comment">//
+                    alias: boost::spirit::karma::ulong_long</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">ulong_long</span></code>
+              and <code class="computeroutput"><span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+              are only available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) unsigned integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.synopsis"></a><h6>
+<a name="id762086"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">Num</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">uint_generator</span><span class="special">;</span>
+</pre>
+<a name="spirit.karma.reference.numeric.unsigned_int.template_parameters"></a><h6>
+<a name="id762155"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The numeric base type of the numeric generator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Radix</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The radix base. This can be either 2: binary, 8: octal, 10: decimal
+                    and 16: hexadecimal.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    10
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.model_of"></a><h6>
+<a name="id762282"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dd><p>
+                Numeric literal, any unsigned integer value, or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to an unsigned integer value of type
+                <code class="computeroutput"><span class="identifier">Num</span></code>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Num</span></code></span></dt>
+<dd><p>
+                Type of <code class="computeroutput"><span class="identifier">num</span></code>: any
+                unsigned integer type, or in case of a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a>, its return value
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Radix</span></code></span></dt>
+<dd><p>
+                A integer literal specifying the required radix for the output conversion.
+                Valid values are <code class="computeroutput"><span class="number">2</span></code>,
+                <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>,
+                and <code class="computeroutput"><span class="number">16</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.numeric.unsigned_int.expression_semantics"></a><h6>
+<a name="id762434"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the integer literal <code class="computeroutput"><span class="identifier">num</span></code>
+                    using the default formatting (radix is 10, sign is only printed
+                    for negative literals). This generator never fails (except if
+                    the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ushort</span>
+<span class="identifier">uint</span>
+<span class="identifier">ulong</span>
+<span class="identifier">ulong_long</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer provided by a mandatory attribute
+                    using the default formatting (radix is 10). This generator never
+                    fails (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">ushort</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">uint</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">ulong</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer provided by the immediate literal
+                    value the generator is initialized from using the default formatting
+                    (radix is 10). If this generator has an associated attribute
+                    it succeeds only as long as the attribute is equal to the immediate
+                    literal (except if the underlying output stream reports an error).
+                    Otherwise this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span>
+<span class="identifier">oct</span>
+<span class="identifier">hex</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer provided by a mandatory attribute
+                    using the default formatting and the corresponding radix (<code class="computeroutput"><span class="identifier">bin</span></code>: radix is 2, <code class="computeroutput"><span class="identifier">oct</span></code>: radix is 8, <code class="computeroutput"><span class="identifier">hex</span></code>: radix is 16). This generator
+                    never fails (except if the underlying output stream reports an
+                    error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">oct</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">hex</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer provided by the immediate literal
+                    value the generator is initialized from using the default formatting
+                    and the corresponding radix (<code class="computeroutput"><span class="identifier">bin</span></code>:
+                    radix is 2, <code class="computeroutput"><span class="identifier">oct</span></code>:
+                    radix is 8, <code class="computeroutput"><span class="identifier">hex</span></code>:
+                    radix is 16). If this generator has an associated attribute it
+                    succeeds only as long as the attribute is equal to the immediate
+                    literal (except if the underlying output stream reports an error).
+                    Otherwise this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            All generators listed in the table above (except <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>) are predefined specializations of the
+            <code class="computeroutput"><span class="identifier">uint_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">></span></code>
+            basic unsigned integer number generator type described below. It is possible
+            to directly use this type to create unsigned integer generators using
+            a wide range of formatting options.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer of type <code class="computeroutput"><span class="identifier">Num</span></code>
+                    provided by a mandatory attribute using the specified <code class="computeroutput"><span class="identifier">Radix</span></code> (possible values are
+                    <code class="computeroutput"><span class="number">2</span></code>, <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>,
+                    and <code class="computeroutput"><span class="number">16</span></code>, the default
+                    value is <code class="computeroutput"><span class="number">10</span></code>).This
+                    generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the unsigned integer of type <code class="computeroutput"><span class="identifier">Num</span></code>
+                    provided by the immediate literal value the generator is initialized
+                    from, using the specified <code class="computeroutput"><span class="identifier">Radix</span></code>
+                    (possible values are <code class="computeroutput"><span class="number">2</span></code>,
+                    <code class="computeroutput"><span class="number">8</span></code>, <code class="computeroutput"><span class="number">10</span></code>, and <code class="computeroutput"><span class="number">16</span></code>,
+                    the default value is <code class="computeroutput"><span class="number">10</span></code>).
+                    If this generator has an associated attribute it succeeds only
+                    as long as the attribute is equal to the immediate literal (except
+                    if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.additional_requirements"></a><h6>
+<a name="id763085"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.additional_requirements">Additional
+            Requirements</a>
+          </h6>
+<p>
+            The following lists enumerate the requirements which must be met in order
+            to use a certain type <code class="computeroutput"><span class="identifier">Num</span></code>
+            to instantiate and use a <code class="computeroutput"><span class="identifier">uint_generator</span><span class="special"><</span><span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">></span></code>.
+          </p>
+<p>
+            If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">Num</span><span class="special">>::</span><span class="identifier">value</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>
+            the type <code class="computeroutput"><span class="identifier">Num</span></code> must have
+            defined:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              comparison operators for: <code class="computeroutput"><span class="special"><</span></code>,
+              <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">==</span></code>,
+              <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+              and <code class="computeroutput"><span class="special">>=</span></code>
+</li>
+<li class="listitem">
+              numeric operators for: <code class="computeroutput"><span class="special">+</span></code>,
+              <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+              <code class="computeroutput"><span class="special">*</span></code>, and <code class="computeroutput"><span class="special">%</span></code>
+</li>
+</ul></div>
+<p>
+            If <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_integral</span><span class="special"><</span><span class="identifier">Num</span><span class="special">>::</span><span class="identifier">value</span></code> is <code class="computeroutput"><span class="keyword">false</span></code>
+            the type <code class="computeroutput"><span class="identifier">Num</span></code> must have
+            defined:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              comparison operators for: <code class="computeroutput"><span class="special"><</span></code>,
+              <code class="computeroutput"><span class="special"><=</span></code>, <code class="computeroutput"><span class="special">==</span></code>,
+              <code class="computeroutput"><span class="special">!=</span></code>, <code class="computeroutput"><span class="special">></span></code>,
+              and <code class="computeroutput"><span class="special">>=</span></code>
+</li>
+<li class="listitem">
+              numeric operators for: <code class="computeroutput"><span class="special">+</span></code>,
+              <code class="computeroutput"><span class="special">-</span></code>, <code class="computeroutput"><span class="special">/</span></code>,
+              <code class="computeroutput"><span class="special">*</span></code>, and <code class="computeroutput"><span class="special">%</span></code>
+</li>
+<li class="listitem">
+              helper functions implementing the interface and the semantics of:
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">fmod</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">lround</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ltrunc</span></code>,
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">floor</span></code>, and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ceil</span></code>.
+              These need to be defined in a way so that they will be found using
+              argument dependent lookup (ADL).
+            </li>
+</ul></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.attributes"></a><h6>
+<a name="id763499"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ushort</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ushort</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">uint</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">uint</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+                    <span class="keyword">long</span></code>, attribute is mandatory
+                    (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_long</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+                    <span class="keyword">long</span></code>, attribute is optional,
+                    if it is supplied, the generator compares the attribute with
+                    <code class="computeroutput"><span class="identifier">num</span></code> and succeeds
+                    only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span>
+<span class="identifier">oct</span>
+<span class="identifier">hex</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>,
+                    attribute is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bin</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">oct</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span>
+<span class="identifier">hex</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>,
+                    attribute is optional, if it is supplied, the generator compares
+                    the attribute with <code class="computeroutput"><span class="identifier">num</span></code>
+                    and succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">uint_generator</span><span class="special"><</span>
+    <span class="identifier">Num</span><span class="special">,</span> <span class="identifier">Radix</span>
+<span class="special">>()(</span><span class="identifier">num</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Num</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">num</span></code> and
+                    succeeds only if both are equal, failing otherwise.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.complexity"></a><h6>
+<a name="id765878"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where <code class="computeroutput"><span class="identifier">N</span></code> is
+                the number of digits needed to represent the generated integer number
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.numeric.unsigned_int.example"></a><h6>
+<a name="id765910"></a>
+            <a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">uint</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an <code class="computeroutput"><span class="identifier">uint</span></code>
+            generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"2"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="number">2U</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"2"</span><span class="special">,</span> <span class="identifier">uint</span><span class="special">(</span><span class="number">2</span><span class="special">));</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2"</span><span class="special">,</span> <span class="identifier">uint</span><span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="number">2</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">uint</span><span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="number">3</span><span class="special">);</span>    <span class="comment">// fails (as 2 != 3)!
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2"</span><span class="special">,</span> <span class="identifier">uint</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="signed_int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Operator</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="directive/omit.html" title="Consume Attribute (omit[])">
+<link rel="next" href="operator/sequence.html" title="Sequences (a << b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive/omit.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator/sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Operator">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.operator"></a><a class="link" href="operator.html" title="Operator">Operator</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="operator/sequence.html"> Sequences
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/alternative.html"> Alternative
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/kleene.html"> Kleene Star
+          (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"> Plus (+a)</span></dt>
+<dt><span class="section"> Lists (a % b)</span></dt>
+<dt><span class="section"><a href="operator/optional.html"> Optional
+          (<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/and_predicate.html"> And
+          Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/not_predicate.html"> Not
+          Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a></span></dt>
+</dl></div>
+<p>
+          This module includes different generators which get instantiated if one
+          of the overloaded operators is used with more primitive generator constructs.
+          It includes sequences (<code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span></code>),
+          alternatives (<code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+          <span class="identifier">b</span></code>), Kleene star (unary <code class="computeroutput"><span class="special">*</span></code>), plus (unary <code class="computeroutput"><span class="special">+</span></code>),
+          optional (unary <code class="computeroutput"><span class="special">-</span></code>), lists
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+          <span class="identifier">b</span></code>), and the two predicates, the
+          <span class="emphasis"><em>and</em></span> predicate (unary <code class="computeroutput"><span class="special">&</span></code>)
+          and the <span class="emphasis"><em>not</em></span> predicate (unary <code class="computeroutput"><span class="special">!</span></code>).
+        </p>
+<a name="spirit.karma.reference.operator.module_header"></a><h6>
+<a name="id827399"></a>
+          <a class="link" href="operator.html#spirit.karma.reference.operator.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive/omit.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator/sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,313 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Alternative (a | b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="sequence.html" title="Sequences (a << b)">
+<link rel="next" href="kleene.html" title="Kleene Star (*a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sequence.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="kleene.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Alternative (a | b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.alternative"></a><a class="link" href="alternative.html" title="Alternative (a | b)"> Alternative
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.alternative.description"></a><h6>
+<a name="id829762"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.description">Description</a>
+          </h6>
+<p>
+            Generator alternatives are used to combine different, more primitive
+            generators into alternatives. All generators in an alternative are invoked
+            from left to right until one of them succeeds.
+          </p>
+<a name="spirit.karma.reference.operator.alternative.header"></a><h6>
+<a name="id829779"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/alternative.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_alternative</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.alternative.model_of"></a><h6>
+<a name="id829853"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/narygenerator.html" title="NaryGenerator"><code class="computeroutput"><span class="identifier">NaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.alternative.expression_semantics"></a><h6>
+<a name="id829887"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/narygenerator.html" title="NaryGenerator"><code class="computeroutput"><span class="identifier">NaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">b</span></code> are executed
+                    sequentially from left to right and until one of them succeeds.
+                    A failed generator forces the alternative generator to try the
+                    next one. The alternative fails as a whole only if all elements
+                    of the alternative fail. Each element of the alternative gets
+                    passed the whole attribute of the alternative.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<p>
+            Alternatives intercept and buffer the output of the currently executed
+            element. This allows to avoid partial outputs from failing elements as
+            the buffered content will be forwarded to the actual output only after
+            an element succeeded.
+          </p>
+<a name="spirit.karma.reference.operator.alternative.attributes"></a><h6>
+<a name="id829999"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code> (alternative)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The table above uses <code class="computeroutput"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> as a placeholder only. The notation
+              <code class="computeroutput"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>
+              stands for the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>.
+            </p></td></tr>
+</table></div>
+<p>
+            Alternatives are special in terms of attribute handling as their behavior
+            is not completely compile time defined. First of all the selected alternative
+            element depends on the actual type of the attribute supplied to the alternative
+            generator (i.e. what is stored in the variant). The attribute type supplied
+            at <span class="emphasis"><em>runtime</em></span> narrows the set of considered alternatives
+            to those being compatible attribute wise. The remaining alternatives
+            are tried sequentially until the first of them succeeds. See below for
+            an example of this behavior.
+          </p>
+<a name="spirit.karma.reference.operator.alternative.complexity"></a><h6>
+<a name="id830518"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the alternative generator is defined by
+                the sum of the complexities of its elements. The complexity of the
+                alternative itself is O(N), where N is the number of elements in
+                the alternative.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.alternative.example"></a><h6>
+<a name="id830542"></a>
+            <a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an alternative. While being only the second alternative,
+            the <code class="computeroutput"><span class="identifier">double_</span></code> generator
+            is chosen for output formatting because the supplied attribute type is
+            not compatible (i.e. not convertible) to the attribute type of the <code class="computeroutput"><span class="identifier">string</span></code> alternative.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">v1</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0"</span><span class="special">,</span> <span class="identifier">string</span> <span class="special">|</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">v1</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="identifier">string</span> <span class="special">|</span> <span class="identifier">double_</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The same formatting rules may be used to output a string. This time we
+            supply the string <code class="computeroutput"><span class="string">"example"</span></code>,
+            resulting in the first alternative to be chosen for the generated output.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="identifier">v2</span><span class="special">(</span><span class="string">"example"</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"example"</span><span class="special">,</span> <span class="identifier">string</span> <span class="special">|</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">v2</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"example"</span><span class="special">,</span> <span class="identifier">string</span> <span class="special">|</span> <span class="identifier">double_</span><span class="special">,</span> <span class="string">"example"</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sequence.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="kleene.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,275 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>And Predicate (&a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="optional.html" title="Optional (-a)">
+<link rel="next" href="not_predicate.html" title="Not Predicate (!a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="optional.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="And Predicate (&a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.and_predicate"></a><a class="link" href="and_predicate.html" title="And Predicate (&a)"> And
+          Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.and_predicate.description"></a><h6>
+<a name="id841695"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.description">Description</a>
+          </h6>
+<p>
+            The and predicate generator is used to test, whether the embedded generator
+            succeeds without generating any output. It succeeds if the embedded generator
+            succeeds.
+          </p>
+<a name="spirit.karma.reference.operator.and_predicate.header"></a><h6>
+<a name="id841714"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/and_predicate.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_and_predicate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.and_predicate.model_of"></a><h6>
+<a name="id841788"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.and_predicate.expression_semantics"></a><h6>
+<a name="id841824"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed for the sole purpose of testing whether it succeeds.
+                    The and predicate generator succeeds as long as its embedded
+                    generator succeeds (except if the underlying output stream reports
+                    an error). The and predicate never produces any output.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<p>
+            The and generator is implemented by redirecting all output produced by
+            its embedded generator into a discarding device.
+          </p>
+<a name="spirit.karma.reference.operator.and_predicate.attributes"></a><h6>
+<a name="id841928"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>
+                    (and predicate, unary <code class="computeroutput"><span class="special">&</span></code>)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                    <span class="identifier">A</span> <span class="special">--></span>
+                    <span class="special">&</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The attribute of the and predicate is not always <code class="computeroutput"><span class="identifier">Unused</span></code>,
+              which is different from Qi's and predicate. This is necessary as the
+              generator the and predicate is attached to most of the time needs an
+              attribute.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.and_predicate.complexity"></a><h6>
+<a name="id842076"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the and predicate generator is defined
+                by the complexity of its embedded generator. The complexity of the
+                and predicate generator itself is O(1).
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.and_predicate.example"></a><h6>
+<a name="id842103"></a>
+            <a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an and predicate generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"b"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'b'</span> <span class="special">|</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'a'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"c"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'b'</span> <span class="special">|</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'x'</span><span class="special">);</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">string</span><span class="special">(</span><span class="string">"123"</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span> <span class="special">|</span> <span class="string">"def"</span><span class="special">,</span> <span class="string">"123"</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"def"</span><span class="special">,</span> <span class="special">&</span><span class="identifier">string</span><span class="special">(</span><span class="string">"123"</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span> <span class="special">|</span> <span class="string">"def"</span><span class="special">,</span> <span class="string">"456"</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="optional.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,323 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Kleene Star (*a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="alternative.html" title="Alternative (a | b)">
+<link rel="next" href="plus.html" title="Plus (+a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alternative.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="plus.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Kleene Star (*a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.kleene"></a><a class="link" href="kleene.html" title="Kleene Star (*a)"> Kleene Star
+          (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.kleene.description"></a><h6>
+<a name="id832978"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.description">Description</a>
+          </h6>
+<p>
+            Kleene star generators are used to repeat the execution of an embedded
+            generator zero or more times. Regardless of the success of the embedded
+            generator, the Kleene star generator always succeeds.
+          </p>
+<a name="spirit.karma.reference.operator.kleene.header"></a><h6>
+<a name="id832994"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/kleene.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_kleene</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.kleene.model_of"></a><h6>
+<a name="id833069"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.kleene.expression_semantics"></a><h6>
+<a name="id833107"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed zero or more times depending on the availability
+                    of an attribute. The execution of <code class="computeroutput"><span class="identifier">a</span></code>
+                    stops after the attribute values passed to the Kleene star generator
+                    are exhausted. The Kleene star always succeeds (except if the
+                    underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.operator.kleene.attributes"></a><h6>
+<a name="id833214"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>
+                    (Kleene star, unary <code class="computeroutput"><span class="special">*</span></code>)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The table above uses <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as a placeholder only. The notation
+              of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+              stands for <span class="emphasis"><em>any STL container</em></span> holding elements
+              of type <code class="computeroutput"><span class="identifier">A</span></code>.
+            </p></td></tr>
+</table></div>
+<p>
+            The Kleene star generator will execute its embedded generator once for
+            each element in the provided container attribute and as long as the embedded
+            generator succeeds. On each iteration it will pass the next consecutive
+            element from the container attribute to the embedded generator. Therefor
+            the number of iterations will not be larger than the number of elements
+            in the container passed as its attribute. An empty container will make
+            the Kleene star to not generate any output at all.
+          </p>
+<p>
+            It is important to note, that the Kleene star does not perform any buffering
+            of the output generated by its embedded elements. That means that any
+            failing element generator might have already generated some output, which
+            is <span class="emphasis"><em>not</em></span> rolled back.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The simplest way to force a Kleene star to behave as if it did buffering
+              is to wrap it into a buffering directive (see <a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">buffer</span><span class="special">[*</span><span class="identifier">a</span><span class="special">]</span></pre>
+<p>
+            </p>
+<p>
+              which will <span class="emphasis"><em>not</em></span> generate any output in case of
+              a failing generator <code class="computeroutput"><span class="identifier">a</span></code>.
+              The expression:
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="special">*(</span><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">])</span></pre>
+<p>
+            </p>
+<p>
+              will not generate any partial output from a generator <code class="computeroutput"><span class="identifier">a</span></code> if it fails generating in the middle
+              of its output. The overall expression will still generate the output
+              as produced by all succeeded invocations of the generator <code class="computeroutput"><span class="identifier">a</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.kleene.complexity"></a><h6>
+<a name="id833561"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the Kleene star generator is defined by
+                the complexity of its embedded generator multiplied by the number
+                of executed iterations. The complexity of the Kleene star itself
+                is O(N), where N is the number of elements in the container passed
+                as its attribute.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.kleene.example"></a><h6>
+<a name="id833585"></a>
+            <a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a Kleene star generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">v</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0 2.0 3.0 "</span><span class="special">,</span> <span class="special">*</span><span class="identifier">double_</span><span class="special">,</span> <span class="identifier">space</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alternative.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="plus.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,344 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lists (a % b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="plus.html" title="Plus (+a)">
+<link rel="next" href="optional.html" title="Optional (-a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="plus.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="optional.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lists (a % b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.list"></a><a class="link" href="list.html" title="Lists (a % b)"> Lists (<code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.list.description"></a><h6>
+<a name="id836699"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.description">Description</a>
+          </h6>
+<p>
+            The list generator is used to repeat the execution of an embedded generator
+            and interspace it with the output of anyother generator one or more times.
+            It succeeds if the embedded generator has been successfully executed
+            at least once.
+          </p>
+<a name="spirit.karma.reference.operator.list.header"></a><h6>
+<a name="id836716"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/list.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.list.model_of"></a><h6>
+<a name="id836790"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/binarygenerator.html" title="BinaryGenerator"><code class="computeroutput"><span class="identifier">BinaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.list.expression_semantics"></a><h6>
+<a name="id836829"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/binarygenerator.html" title="BinaryGenerator"><code class="computeroutput"><span class="identifier">BinaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed one or more times depending on the availability of
+                    an attribute. The output generated by <code class="computeroutput"><span class="identifier">a</span></code>
+                    is interspaced with the output generated by <code class="computeroutput"><span class="identifier">b</span></code>.
+                    The list generator succeeds as long as both its first embedded
+                    generator has been successfully executed at least once (except
+                    if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<p>
+            The list expression <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>
+            is a shortcut for <code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span> <span class="special">*(</span><span class="identifier">b</span> <span class="special"><<</span>
+            <span class="identifier">a</span><span class="special">)</span></code>.
+            It is almost semantically equivalent, except for the attribute of <code class="computeroutput"><span class="identifier">b</span></code>, which gets ignored in the case of
+            the list generator.
+          </p>
+<a name="spirit.karma.reference.operator.list.attributes"></a><h6>
+<a name="id837010"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+                    <span class="identifier">b</span></code> (list)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The table above uses <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as a placeholder only. The notation
+              of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+              stands for <span class="emphasis"><em>any STL container</em></span> holding elements
+              of type <code class="computeroutput"><span class="identifier">A</span></code>.
+            </p></td></tr>
+</table></div>
+<p>
+            The list generator will execute its embedded generator once for each
+            element in the provided container attribute and as long as the embedded
+            generator succeeds. The output generated by its first generator will
+            be interspaced by the output generated by the second generator. On each
+            iteration it will pass the next consecutive element from the container
+            attribute to the first embedded generator. The second embedded generator
+            does not get passed any attributes (it gets invoked using an <code class="computeroutput"><span class="identifier">unused_type</span></code> as its attribute). Therefor
+            the number of iterations will not be larger than the number of elements
+            in the container passed as its attribute. An empty container will make
+            the list generator fail.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              If you want to use the list generator and still allow for an empty
+              attribute, you can use the optional operator (see <a class="link" href="optional.html" title="Optional (-a)">optional
+              (unary <code class="computeroutput"><span class="special">-</span></code>)</a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="special">-(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">)</span></pre>
+<p>
+            </p>
+<p>
+              which will succeed even if the provided container attribute does not
+              contain any elements.
+            </p>
+</td></tr>
+</table></div>
+<p>
+            It is important to note, that the list generator does not perform any
+            buffering of the output generated by its embedded elements. That means
+            that any failing element generator might have already generated some
+            output, which is <span class="emphasis"><em>not</em></span> rolled back.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The simplest way to force a list generator to behave as if it did buffering
+              is to wrap it into a buffering directive (see <a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">]</span></pre>
+<p>
+            </p>
+<p>
+              which will <span class="emphasis"><em>not</em></span> generate any output in case of
+              a failing generator <code class="computeroutput"><span class="identifier">a</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.list.complexity"></a><h6>
+<a name="id838561"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the list generator is defined by the complexity
+                of its embedded generators multiplied by the number of executed iterations.
+                The complexity of the list generator itself is O(N), where N is the
+                number of elements in the container passed as its attribute.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.list.example"></a><h6>
+<a name="id838585"></a>
+            <a class="link" href="list.html#spirit.karma.reference.operator.list.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a list generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v1</span><span class="special">;</span>
+<span class="identifier">v1</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0"</span><span class="special">,</span> <span class="identifier">double_</span> <span class="special">%</span> <span class="char">','</span><span class="special">,</span> <span class="identifier">v1</span><span class="special">);</span>
+
+<span class="identifier">v1</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0,2.0"</span><span class="special">,</span> <span class="identifier">double_</span> <span class="special">%</span> <span class="char">','</span><span class="special">,</span> <span class="identifier">v1</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="plus.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="optional.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,275 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Not Predicate (!a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="and_predicate.html" title="And Predicate (&a)">
+<link rel="next" href="../../performance_measurements.html" title="Performance Measurements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../performance_measurements.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Not Predicate (!a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.not_predicate"></a><a class="link" href="not_predicate.html" title="Not Predicate (!a)"> Not
+          Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.not_predicate.description"></a><h6>
+<a name="id843177"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.description">Description</a>
+          </h6>
+<p>
+            The not predicate generator is used to test, whether the embedded generator
+            fails, without generating any output. It succeeds if the embedded generator
+            fails.
+          </p>
+<a name="spirit.karma.reference.operator.not_predicate.header"></a><h6>
+<a name="id843196"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/not_predicate.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_not_predicate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.not_predicate.model_of"></a><h6>
+<a name="id843270"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.not_predicate.expression_semantics"></a><h6>
+<a name="id843306"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed for the sole purpose of testing whether it succeeds.
+                    The not predicate generator succeeds as long as its embedded
+                    generator fails (except if the underlying output stream reports
+                    an error). The not predicate never produces any output.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<p>
+            The not generator is implemented by redirecting all output produced by
+            its embedded generator into a discarding device.
+          </p>
+<a name="spirit.karma.reference.operator.not_predicate.attributes"></a><h6>
+<a name="id843410"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>
+                    (not predicate, unary <code class="computeroutput"><span class="special">!</span></code>)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                    <span class="identifier">A</span> <span class="special">--></span>
+                    <span class="special">!</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The attribute of the and predicate is not always <code class="computeroutput"><span class="identifier">Unused</span></code>,
+              which is different from Qi's and predicate. This is necessary as the
+              generator the and predicate is attached to most of the time needs an
+              attribute.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.not_predicate.complexity"></a><h6>
+<a name="id843559"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the not predicate generator is defined
+                by the complexity of its embedded generator. The complexity of the
+                not predicate generator itself is O(1).
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.not_predicate.example"></a><h6>
+<a name="id843585"></a>
+            <a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a not predicate generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"c"</span><span class="special">,</span> <span class="special">!</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'b'</span> <span class="special">|</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'a'</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"b"</span><span class="special">,</span> <span class="special">!</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'b'</span> <span class="special">|</span> <span class="char">'c'</span><span class="special">,</span> <span class="char">'x'</span><span class="special">);</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"def"</span><span class="special">,</span> <span class="special">!</span><span class="identifier">string</span><span class="special">(</span><span class="string">"123"</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span> <span class="special">|</span> <span class="string">"def"</span><span class="special">,</span> <span class="string">"123"</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="special">!</span><span class="identifier">string</span><span class="special">(</span><span class="string">"123"</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"abc"</span> <span class="special">|</span> <span class="string">"def"</span><span class="special">,</span> <span class="string">"456"</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../performance_measurements.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,313 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Optional (-a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="list.html" title="Lists (a % b)">
+<link rel="next" href="and_predicate.html" title="And Predicate (&a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="list.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Optional (-a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.optional"></a><a class="link" href="optional.html" title="Optional (-a)"> Optional
+          (<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.optional.description"></a><h6>
+<a name="id839486"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.description">Description</a>
+          </h6>
+<p>
+            The optional generator is used to conditionally execute an embedded generator.
+            It succeeds always.
+          </p>
+<a name="spirit.karma.reference.operator.optional.header"></a><h6>
+<a name="id839503"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/optional.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_optional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.optional.model_of"></a><h6>
+<a name="id839577"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.optional.expression_semantics"></a><h6>
+<a name="id839616"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed depending on the availability of an attribute. The
+                    optional generator succeeds as long as its embedded generator
+                    succeeds (except if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.operator.optional.attributes"></a><h6>
+<a name="id839715"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>
+                    (optional, unary <code class="computeroutput"><span class="special">-</span></code>)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The table above uses <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as a placeholder only. The notation
+              of <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+              stands for the data type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>.
+            </p></td></tr>
+</table></div>
+<p>
+            The optional generator will execute its embedded generator once if the
+            provided attribute holds a valid value. It forwards the value held in
+            its attribute to the embedded generator.
+          </p>
+<p>
+            It is important to note, that the optional generator does not perform
+            any buffering of the output generated by its embedded elements. That
+            means that any failing element might have already generated some output,
+            which is <span class="emphasis"><em>not</em></span> rolled back.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The simplest way to force a optional generator to behave as if it did
+              buffering is to wrap it into a buffering directive (see <a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">buffer</span><span class="special">[-</span><span class="identifier">a</span><span class="special">]</span></pre>
+<p>
+            </p>
+<p>
+              which will <span class="emphasis"><em>not</em></span> generate any output in case of
+              a failing generator <code class="computeroutput"><span class="identifier">a</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.optional.complexity"></a><h6>
+<a name="id840033"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the optional generator is defined by the
+                complexity of its embedded generator. The complexity of the optional
+                generator itself is O(1).
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.optional.example"></a><h6>
+<a name="id840057"></a>
+            <a class="link" href="optional.html#spirit.karma.reference.operator.optional.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of an optional generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">val</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0"</span><span class="special">,</span> <span class="special">-</span><span class="identifier">double_</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"2.0"</span><span class="special">,</span> <span class="special">-</span><span class="identifier">double_</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Usage and result of an empty optional generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">val</span><span class="special">;</span>          <span class="comment">// empty optional
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="special">-</span><span class="identifier">double_</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="list.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,337 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Plus (+a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="kleene.html" title="Kleene Star (*a)">
+<link rel="next" href="list.html" title="Lists (a % b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="kleene.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="list.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Plus (+a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.plus"></a><a class="link" href="plus.html" title="Plus (+a)"> Plus (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.plus.description"></a><h6>
+<a name="id835072"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.description">Description</a>
+          </h6>
+<p>
+            The plus generator is used to repeat the execution of an embedded generator
+            one or more times. It succeeds if the embedded generator has been successfully
+            executed at least once.
+          </p>
+<a name="spirit.karma.reference.operator.plus.header"></a><h6>
+<a name="id835089"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/plus.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_plus</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.plus.model_of"></a><h6>
+<a name="id835163"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.plus.expression_semantics"></a><h6>
+<a name="id835202"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/unarygenerator.html" title="UnaryGenerator"><code class="computeroutput"><span class="identifier">UnaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generator <code class="computeroutput"><span class="identifier">a</span></code>
+                    is executed one or more times depending on the availability of
+                    an attribute. The execution of <code class="computeroutput"><span class="identifier">a</span></code>
+                    stops after the attribute values passed to the plus generator
+                    are exhausted. The plus generator succeeds as long as its embedded
+                    generator has been successfully executed at least once (except
+                    if the underlying output stream reports an error).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.operator.plus.attributes"></a><h6>
+<a name="id835308"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>
+                    (unary <code class="computeroutput"><span class="special">+</span></code>)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The table above uses <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as a placeholder only. The notation
+              of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+              stands for <span class="emphasis"><em>any STL container</em></span> holding elements
+              of type <code class="computeroutput"><span class="identifier">A</span></code>.
+            </p></td></tr>
+</table></div>
+<p>
+            The plus generator will execute its embedded generator once for each
+            element in the provided container attribute and as long as the embedded
+            generator succeeds. On each iteration it will pass the next consecutive
+            element from the container attribute to the embedded generator. Therefor
+            the number of iterations will not be larger than the number of elements
+            in the container passed as its attribute. An empty container will make
+            the plus generator fail.
+          </p>
+<p>
+            It is important to note, that the plus generator does not perform any
+            buffering of the output generated by its embedded elements. That means
+            that any failing element generator might have already generated some
+            output, which is <span class="emphasis"><em>not</em></span> rolled back.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The simplest way to force a plus generator to behave as if it did buffering
+              is to wrap it into a buffering directive (see <a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">buffer</span><span class="special">[+</span><span class="identifier">a</span><span class="special">]</span></pre>
+<p>
+            </p>
+<p>
+              which will <span class="emphasis"><em>not</em></span> generate any output in case of
+              a failing generator <code class="computeroutput"><span class="identifier">a</span></code>.
+              The expression:
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="special">+(</span><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">])</span></pre>
+<p>
+            </p>
+<p>
+              will not generate any partial output from a generator <code class="computeroutput"><span class="identifier">a</span></code> if it fails generating in the middle
+              of its output. The overall expression will still generate the output
+              as produced by all succeeded invocations of the generator <code class="computeroutput"><span class="identifier">a</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.plus.complexity"></a><h6>
+<a name="id835655"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the plus generator is defined by the complexity
+                of its embedded generator multiplied by the number of executed iterations.
+                The complexity of the plus generator itself is O(N), where N is the
+                number of elements in the container passed as its attribute.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.plus.example"></a><h6>
+<a name="id835679"></a>
+            <a class="link" href="plus.html#spirit.karma.reference.operator.plus.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a plus generator:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v1</span><span class="special">;</span>
+<span class="identifier">v1</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">1.0</span><span class="special">);</span>
+<span class="identifier">v1</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">2.0</span><span class="special">);</span>
+<span class="identifier">v1</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="number">3.0</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0 2.0 3.0 "</span><span class="special">,</span> <span class="special">+</span><span class="identifier">double_</span><span class="special">,</span> <span class="identifier">space</span><span class="special">,</span> <span class="identifier">v1</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            A more sophisticated use case showing how to leverage the fact that plus
+            is failing for empty containers passed as its attribute:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v2</span><span class="special">;</span>               <span class="comment">// empty container
+</span><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"empty"</span><span class="special">,</span> <span class="special">+</span><span class="identifier">double_</span> <span class="special">|</span> <span class="string">"empty"</span><span class="special">,</span> <span class="identifier">v2</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="kleene.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="list.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,319 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Sequences (a << b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="../operator.html" title="Operator">
+<link rel="next" href="alternative.html" title="Alternative (a | b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alternative.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Sequences (a << b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.operator.sequence"></a><a class="link" href="sequence.html" title="Sequences (a << b)"> Sequences
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.operator.sequence.description"></a><h6>
+<a name="id827500"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.description">Description</a>
+          </h6>
+<p>
+            Generator sequences are used to consecutively combine different, more
+            primitive generators. All generators in a sequence are invoked from left
+            to right as long as they succeed.
+          </p>
+<a name="spirit.karma.reference.operator.sequence.header"></a><h6>
+<a name="id827516"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/sequence.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.operator.sequence.model_of"></a><h6>
+<a name="id827591"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/narygenerator.html" title="NaryGenerator"><code class="computeroutput"><span class="identifier">NaryGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.sequence.expression_semantics"></a><h6>
+<a name="id827627"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/narygenerator.html" title="NaryGenerator"><code class="computeroutput"><span class="identifier">NaryGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The generators <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">b</span></code> are executed
+                    sequentially from left to right and as long as they succeed.
+                    A failed generator stops the execution of the entire sequence
+                    and makes the sequence fail as well.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<p>
+            It is important to note, that sequences don't perform any buffering of
+            the output generated by its elements. That means that any failing sequence
+            might have already generated some output, which is <span class="emphasis"><em>not</em></span>
+            rolled back.
+          </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The simplest way to force a sequence to behave as if it did buffering
+              is to wrap it into a buffering directive (see <a class="link" href="../directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>):
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span> <span class="special"><<</span> <span class="identifier">c</span><span class="special">]</span></pre>
+<p>
+            </p>
+<p>
+              which will <span class="emphasis"><em>not</em></span> generate any output in case of
+              a failing sequence.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.reference.operator.sequence.attributes"></a><h6>
+<a name="id827820"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special"><<</span>
+                    <span class="identifier">b</span></code> (sequence)
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              The table above uses <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> as placeholders only.
+            </p>
+<p>
+              The notation <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> stands for <span class="emphasis"><em>any fusion
+              sequence of two elements</em></span>, where <code class="computeroutput"><span class="identifier">A</span></code>
+              is the type of its first element and <code class="computeroutput"><span class="identifier">B</span></code>
+              is the type of its second element.
+            </p>
+<p>
+              The notation of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> stands for <span class="emphasis"><em>any STL container</em></span>
+              holding elements of type <code class="computeroutput"><span class="identifier">A</span></code>.
+            </p>
+</td></tr>
+</table></div>
+<p>
+            The attribute composition and propagation rules as shown in the table
+            above make sequences somewhat special as - if all elements have the same
+            attribute type - they can operate in two modes: consuming fusion sequences
+            and consuming STL containers. The selected mode depends on the type of
+            the attribute supplied
+          </p>
+<a name="spirit.karma.reference.operator.sequence.complexity"></a><h6>
+<a name="id828919"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the sequence generator is defined by the
+                sum of the complexities of its elements. The complexity of the sequence
+                itself is O(N), where N is the number of elements in the sequence.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.operator.sequence.example"></a><h6>
+<a name="id828943"></a>
+            <a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use this common test function:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of a sequence:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"1.0,2.0"</span><span class="special">,</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="alternative.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Stream</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="numeric/real_number.html" title="Real Number Generators (float_, double_, etc.)">
+<link rel="next" href="stream/stream.html" title="Stream (stream, wstream, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric/real_number.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="stream/stream.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Stream">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.stream"></a><a class="link" href="stream.html" title="Stream">Stream</a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="stream/stream.html"> Stream (<code class="computeroutput"><span class="identifier">stream</span></code>, <code class="computeroutput"><span class="identifier">wstream</span></code>,
+          etc.)</a></span></dt></dl></div>
+<p>
+          This module includes the description of the different variants of the
+          <code class="computeroutput"><span class="identifier">stream</span></code> generator. It can
+          be used to utilize existing streaming operators (<code class="computeroutput"><span class="keyword">operator</span><span class="special"><<(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&,</span> <span class="special">...)</span></code>)
+          for output generation.
+        </p>
+<a name="spirit.karma.reference.stream.header"></a><h6>
+<a name="id781992"></a>
+          <a class="link" href="stream.html#spirit.karma.reference.stream.header">Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/stream.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric/real_number.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="stream/stream.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,644 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Stream (stream, wstream, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../stream.html" title="Stream">
+<link rel="prev" href="../stream.html" title="Stream">
+<link rel="next" href="../binary.html" title="Binary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../stream.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../stream.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Stream (stream, wstream, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.stream.stream"></a><a class="link" href="stream.html" title="Stream (stream, wstream, etc.)"> Stream (<code class="computeroutput"><span class="identifier">stream</span></code>, <code class="computeroutput"><span class="identifier">wstream</span></code>,
+          etc.)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.stream.stream.description"></a><h6>
+<a name="id782090"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">stream_generator</span></code>
+            is a primitive which allows to use pre-existing standard streaming operators
+            for output generation integrated with <span class="emphasis"><em>Spirit.Karma</em></span>.
+            It provides a wrapper generator dispatching the value to output to the
+            stream operator of the corresponding type. Any value <code class="computeroutput"><span class="identifier">a</span></code>
+            to be formatted using the <code class="computeroutput"><span class="identifier">stream_generator</span></code>
+            will result in invoking the standard streaming operator for its type
+            <code class="computeroutput"><span class="identifier">A</span></code>, for instance:
+          </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&,</span> <span class="identifier">A</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<a name="spirit.karma.reference.stream.stream.header"></a><h6>
+<a name="id782200"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/stream.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_stream</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.stream.stream.namespace"></a><h6>
+<a name="id782274"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">stream</span> <span class="comment">// alias:
+                    boost::spirit::karma::stream</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">wstream</span> <span class="comment">//
+                    alias: boost::spirit::karma::wstream</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.stream.stream.synopsis"></a><h6>
+<a name="id782392"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">stream_generator</span><span class="special">;</span>
+</pre>
+<a name="spirit.karma.reference.stream.stream.template_parameters"></a><h6>
+<a name="id782446"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Char</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type to use to generate the output. This type will
+                    be used while assigning the generated characters to the underlying
+                    output iterator.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">char</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.karma.reference.stream.stream.model_of"></a><h6>
+<a name="id782538"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
+<dd><p>
+                A variable instance of any type with a defined matching streaming
+                <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>
+                or a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to any type with a defined matching
+                streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.stream.stream.expression_semantics"></a><h6>
+<a name="id782628"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    mandory attribute. The output emitted by this operator will be
+                    the result of the <code class="computeroutput"><span class="identifier">stream</span></code>
+                    generator. This generator never fails (except if the underlying
+                    output stream reports an error). The character type of the I/O
+                    ostream is assumed to be <code class="computeroutput"><span class="keyword">char</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    immediate value <code class="computeroutput"><span class="identifier">s</span></code>.
+                    The output emitted by this operator will be the result of the
+                    <code class="computeroutput"><span class="identifier">stream</span></code> generator.
+                    This generator never fails (except if the underlying output stream
+                    reports an error). The character type of the I/O ostream is assumed
+                    to be <code class="computeroutput"><span class="keyword">char</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">wstream</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    mandory attribute. The output emitted by this operator will be
+                    the result of the <code class="computeroutput"><span class="identifier">stream</span></code>
+                    generator. This generator never fails (except if the underlying
+                    output stream reports an error). The character type of the I/O
+                    ostream is assumed to be <code class="computeroutput"><span class="keyword">wchar_t</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">wstream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    immediate value <code class="computeroutput"><span class="identifier">s</span></code>.
+                    The output emitted by this operator will be the result of the
+                    <code class="computeroutput"><span class="identifier">stream</span></code> generator.
+                    This generator never fails (except if the underlying output stream
+                    reports an error). The character type of the I/O ostream is assumed
+                    to be <code class="computeroutput"><span class="keyword">wchar_t</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            All generators listed in the table above are predefined specializations
+            of the <code class="computeroutput"><span class="identifier">stream_generator</span><span class="special"><</span><span class="identifier">Char</span><span class="special">></span></code> basic stream generator type described
+            below. It is possible to directly use this type to create stream generators
+            using an arbitrary underlying character type.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">stream_generator</span><span class="special"><</span>
+    <span class="identifier">Char</span>
+<span class="special">>()</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    mandory attribute. The output emitted by this operator will be
+                    the result of the <code class="computeroutput"><span class="identifier">stream</span></code>
+                    generator. This generator never fails (except if the underlying
+                    output stream reports an error). The character type of the I/O
+                    ostream is assumed to be <code class="computeroutput"><span class="identifier">Char</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">stream_generator</span><span class="special"><</span>
+    <span class="identifier">Char</span>
+<span class="special">>()(</span><span class="identifier">s</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call the streaming <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> for the type of the
+                    immediate value <code class="computeroutput"><span class="identifier">s</span></code>.
+                    The output emitted by this operator will be the result of the
+                    <code class="computeroutput"><span class="identifier">stream</span></code> generator.
+                    This generator never fails (except if the underlying output stream
+                    reports an error). The character type of the I/O ostream is assumed
+                    to be <code class="computeroutput"><span class="identifier">Char</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.stream.stream.additional_requirements"></a><h6>
+<a name="id783126"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.additional_requirements">Additional
+            Requirements</a>
+          </h6>
+<p>
+            All of the stream generators listed above require the type of the value
+            to generate output for (either the immediate value or the associated
+            attribute) to implement a streaming operator conforming to the usual
+            I/O streams conventions (where <code class="computeroutput"><span class="identifier">attribute_type</span></code>
+            is the type of the value to generate output for):
+          </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Ostream</span><span class="special">></span>
+<span class="identifier">Ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><<</span> <span class="special">(</span><span class="identifier">Ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">attribute_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="comment">// type specific output generation
+</span>    <span class="keyword">return</span> <span class="identifier">os</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            This operator will be called by the stream generators to gather the output
+            for the attribute of type <code class="computeroutput"><span class="identifier">attribute_type</span></code>.
+            All data streamed into the given <code class="computeroutput"><span class="identifier">Ostream</span></code>
+            will end up being generated by the corresponding stream generator instance.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              If the <code class="computeroutput"><span class="identifier">stream</span></code> generator
+              is invoked inside a <code class="computeroutput"><span class="identifier">format</span></code>
+              (or <code class="computeroutput"><span class="identifier">format_delimited</span></code>
+              ) stream manipulator the <code class="computeroutput"><span class="identifier">Ostream</span></code>
+              passed to the <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<()</span></code> will have registered (imbued)
+              the same standard locale instance as the stream the <code class="computeroutput"><span class="identifier">format</span></code>
+              (or <code class="computeroutput"><span class="identifier">format_delimited</span></code>
+              ) manipulator has been used with. This ensures all facets registered
+              (imbued) with the original I/O stream object are used during output
+              generation.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.stream.stream.attributes"></a><h6>
+<a name="id783349"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">wstream</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">wstream</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream_generator</span><span class="special"><</span><span class="identifier">Char</span><span class="special">>()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hold_any</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">stream_generator</span><span class="special"><</span><span class="identifier">Char</span><span class="special">>()(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The attribute type <code class="computeroutput"><span class="identifier">hold_any</span></code>
+              exposed by some of the stream generators is semantically and syntactically
+              equivalent to the type implemented by Boost.Any.
+              It has been added to <span class="emphasis"><em>Spirit</em></span> as it has better a
+              performance and a smaller footprint if compared to Boost.Any.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.stream.stream.complexity"></a><h6>
+<a name="id783661"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of characters emitted by the stream generator
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.stream.stream.example"></a><h6>
+<a name="id783685"></a>
+            <a class="link" href="stream.html#spirit.karma.reference.stream.stream.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">stream</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            And a class definition used in the examples:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="comment">// a simple complex number representation z = a + bi
+</span><span class="keyword">struct</span> <span class="identifier">complex</span>
+<span class="special">{</span>
+    <span class="identifier">complex</span> <span class="special">(</span><span class="keyword">double</span> <span class="identifier">a</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">b</span><span class="special">)</span>
+      <span class="special">:</span> <span class="identifier">a</span><span class="special">(</span><span class="identifier">a</span><span class="special">),</span> <span class="identifier">b</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span>
+    <span class="special">{}</span>
+
+    <span class="keyword">double</span> <span class="identifier">a</span><span class="special">;</span>
+    <span class="keyword">double</span> <span class="identifier">b</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="comment">// define streaming operator for the type complex
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> 
+<span class="keyword">operator</span><span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="identifier">os</span><span class="special">,</span> <span class="identifier">complex</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">z</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">os</span> <span class="special"><<</span> <span class="string">"{"</span> <span class="special"><<</span> <span class="identifier">z</span><span class="special">.</span><span class="identifier">a</span> <span class="special"><<</span> <span class="string">","</span> <span class="special"><<</span> <span class="identifier">z</span><span class="special">.</span><span class="identifier">b</span> <span class="special"><<</span> <span class="string">"}"</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">os</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">stream</span></code>
+            generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">stream</span><span class="special">,</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">stream</span><span class="special">(</span><span class="string">"abc"</span><span class="special">));</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"{1.2,2.4}"</span><span class="special">,</span> <span class="identifier">stream</span><span class="special">,</span> <span class="identifier">complex</span><span class="special">(</span><span class="number">1.2</span><span class="special">,</span> <span class="number">2.4</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"{1.2,2.4}"</span><span class="special">,</span> <span class="identifier">stream</span><span class="special">(</span><span class="identifier">complex</span><span class="special">(</span><span class="number">1.2</span><span class="special">,</span> <span class="number">2.4</span><span class="special">)));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../stream.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../stream.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="char/char_class.html" title="Character Classification (alnum, digit, etc.)">
+<link rel="next" href="string/string.html" title="String (string, lit)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char/char_class.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.reference.string"></a><a class="link" href="string.html" title="String">String</a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"> String (string, lit)</span></dt></dl></div>
+<p>
+          This module includes different string oriented generators allowing to output
+          character sequences. It includes variants of the <code class="computeroutput"><span class="identifier">string</span></code>
+          generator.
+        </p>
+<a name="spirit.karma.reference.string.module_header"></a><h6>
+<a name="id758054"></a>
+          <a class="link" href="string.html#spirit.karma.reference.string.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/string.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_string</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char/char_class.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,444 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String (string, lit)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../string.html" title="String">
+<link rel="prev" href="../string.html" title="String">
+<link rel="next" href="../numeric.html" title="Numeric">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String (string, lit)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.reference.string.string"></a><a class="link" href="string.html" title="String (string, lit)"> String (<code class="computeroutput"><span class="identifier">string</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.karma.reference.string.string.description"></a><h6>
+<a name="id758152"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.description">Description</a>
+          </h6>
+<p>
+            The string generators described in this section are:
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">string</span></code> generator
+            emits a string of characters. The <code class="computeroutput"><span class="identifier">string</span></code>
+            generator is implicitly verbatim: the <code class="computeroutput"><span class="identifier">delimit</span></code>
+            parser is not applied in between characters of the string. The <code class="computeroutput"><span class="identifier">string</span></code> generator has an assocaiated
+            <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as forcing lower or upper case. Examples:
+          </p>
+<pre class="programlisting"><span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">string</span><span class="special">(</span><span class="identifier">L</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span>         <span class="comment">// s is a std::string
+</span></pre>
+<p>
+            <code class="computeroutput"><span class="identifier">lit</span></code>, like <code class="computeroutput"><span class="identifier">string</span></code>, also emits a string of characters.
+            The main difference is that <code class="computeroutput"><span class="identifier">lit</span></code>
+            does not consumes an attribute. A plain string like <code class="computeroutput"><span class="string">"hello"</span></code>
+            or a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code> is equivalent to a <code class="computeroutput"><span class="identifier">lit</span></code>. Examples:
+          </p>
+<pre class="programlisting"><span class="string">"Hello"</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">L</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span>            <span class="comment">// s is a std::string
+</span></pre>
+<a name="spirit.karma.reference.string.string.header"></a><h6>
+<a name="id758381"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/string/lit.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_string</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.karma.reference.string.string.namespace"></a><h6>
+<a name="id758456"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::karma::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+            Encoding Namespace</a> used by the corresponding string generator.
+          </p>
+<a name="spirit.karma.reference.string.string.model_of"></a><h6>
+<a name="id759332"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
+<dd><p>
+                Character-class specific string (See Character Class Types), or a
+                <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a character-class specific string
+                value
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">S</span></code></span></dt>
+<dd><p>
+                The type of a character-clas specific string <code class="computeroutput"><span class="identifier">s</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.karma.reference.string.string.expression_semantics"></a><h6>
+<a name="id759450"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../generator_concepts/primitivegenerator.html" title="PrimitiveGenerator"><code class="computeroutput"><span class="identifier">PrimitiveGenerator</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">s</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the string literal <code class="computeroutput"><span class="identifier">s</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the string literal <code class="computeroutput"><span class="identifier">s</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the string provided by a mandatory attribute interpreted
+                    in the character set defined by <code class="computeroutput"><span class="identifier">ns</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the string <code class="computeroutput"><span class="identifier">s</span></code>
+                    as provided by the immediate literal value the generator is initialized
+                    from. If this generator has an associated attribute it succeeds
+                    only as long as the attribute is equal to the immediate literal
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The generators <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code> can be initialized either using a
+              string literal value (i.e. <code class="computeroutput"><span class="string">"abc"</span></code>),
+              or using a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">char_type</span><span class="special">,</span>
+              <span class="special">...></span></code>, where <code class="computeroutput"><span class="identifier">char_type</span></code> is the required value type
+              of the underlying character sequence.
+            </p></td></tr>
+</table></div>
+<a name="spirit.karma.reference.string.string.attributes"></a><h6>
+<a name="id759763"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">s</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">S</span></code>, attribute
+                    is mandatory (otherwise compilation will fail)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">S</span></code>, attribute
+                    is optional, if it is supplied, the generator compares the attribute
+                    with <code class="computeroutput"><span class="identifier">s</span></code> and succeeds
+                    only if both are equal, failing otherwise
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.karma.reference.string.string.complexity"></a><h6>
+<a name="id759978"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of characters emitted by the string generator
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.karma.reference.string.string.example"></a><h6>
+<a name="id760002"></a>
+            <a class="link" href="string.html#spirit.karma.reference.string.string.example">Example</a>
+          </h6>
+<p>
+            Some includes:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">std_pair</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            All code snippets below use these common test functions:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">G</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_generator_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">G</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">s</span><span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">g</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">str</span> <span class="special">==</span> <span class="identifier">expected</span><span class="special">)</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage of <code class="computeroutput"><span class="identifier">string</span></code>
+            generators:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="string">"abc"</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"abc"</span><span class="special">)));</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">,</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"abc"</span><span class="special">));</span>
+<span class="identifier">test_generator</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="string">"abc"</span><span class="special">)));</span>
+
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">"abc"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"abc"</span><span class="special">),</span> <span class="string">"abc"</span><span class="special">);</span>
+<span class="identifier">test_generator_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"abc"</span><span class="special">),</span> <span class="string">"cba"</span><span class="special">);</span>     <span class="comment">// fails (as "abc" != "cba")
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tutorials</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../karma.html" title="Karma - Writing Generators">
+<link rel="prev" href="../karma.html" title="Karma - Writing Generators">
+<link rel="next" href="tutorials/quick_start.html" title="Quick Start">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../karma.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/quick_start.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Tutorials">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.karma.tutorials"></a><a class="link" href="tutorials.html" title="Tutorials">Tutorials</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="tutorials/karma_complex.html"> Complex - A
+        first more complex generator</a></span></dt>
+<dt><span class="section"><a href="tutorials/karma_attributes.html"> Understanding
+        Generator Attributes</a></span></dt>
+<dt><span class="section"><a href="tutorials/karma_easier_complex.html"> Complex
+        - Made easier</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../karma.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/quick_start.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_attributes.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_attributes.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,354 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Understanding Generator Attributes</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="karma_complex.html" title="Complex - A first more complex generator">
+<link rel="next" href="karma_easier_complex.html" title="Complex - Made easier">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_complex.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_easier_complex.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Understanding Generator Attributes">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.karma_attributes"></a><a class="link" href="karma_attributes.html" title="Understanding Generator Attributes"> Understanding
+        Generator Attributes</a>
+</h4></div></div></div>
+<a name="spirit.karma.tutorials.karma_attributes.attributes_of_primitive_generators"></a><h6>
+<a name="id715408"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.attributes_of_primitive_generators">Attributes
+          of Primitive Generators</a>
+        </h6>
+<p>
+          Before we can start simplifying the complex number example from the previous
+          section we need to introduce the notion of generator attributes. Every
+          generator component in <span class="emphasis"><em>Spirit.Karma</em></span> exposes a specific
+          attribute type. We have already seen that the attribute type of the <code class="computeroutput"><span class="identifier">double_</span></code> generator is <code class="computeroutput"><span class="keyword">double</span></code>.
+          Other primitive generator components have other intuitive attribute types,
+          such as for instance <code class="computeroutput"><span class="identifier">int_</span></code>
+          which has <code class="computeroutput"><span class="keyword">int</span></code>, or <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></code> which has <code class="computeroutput"><span class="keyword">char</span></code>.
+          For a full list of available generator primitives and their attribute types
+          please see the section <a class="link" href="../quick_reference/primitive_generators.html" title="Karma Generators">Karma
+          Generators</a>.
+        </p>
+<p>
+          The attribute type of a generator defines what data types this generator
+          is able to consume in order to produce its output. For primitive generators
+          the normal C++ convertibility rules apply. Any data type convertible to
+          the attribute type of a primitive generator can be used to provide the
+          data to generate. As an example, it is possible to use an integer value
+          in conjunction with a <code class="computeroutput"><span class="identifier">double_</span></code>
+          generator:
+        </p>
+<pre class="programlisting"><span class="comment">// the following generates: 1.0
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
+</pre>
+<a name="spirit.karma.tutorials.karma_attributes.attributes_of_compound_generators"></a><h6>
+<a name="id715600"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.attributes_of_compound_generators">Attributes
+          of Compound Generators</a>
+        </h6>
+<p>
+          <span class="emphasis"><em>Spirit.Karma</em></span> implements well defined attribute type
+          propagation rules for all compound generators, such as sequences, alternatives,
+          Kleene star, etc. The main attribute propagation rule for a sequences is
+          for instance:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+</pre>
+<p>
+          which reads as:
+        </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+            </p>
+<p>
+              Given <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code> are generators, and <code class="computeroutput"><span class="identifier">A</span></code> is the attribute type of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">B</span></code>
+              is the attribute type of <code class="computeroutput"><span class="identifier">b</span></code>,
+              then the attribute type of <code class="computeroutput"><span class="identifier">a</span>
+              <span class="special"><<</span> <span class="identifier">b</span></code>
+              will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>.
+            </p>
+<p>
+          </p>
+</blockquote></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            The notation <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>
+            is used as a placeholder expression for any fusion sequence holding the
+            types A and B, such as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> (for more information see Boost.Fusion).
+          </p></td></tr>
+</table></div>
+<p>
+          As you can see, in order for a type to be compatible with the attribute
+          type of a <span class="emphasis"><em>Spirit.Karma</em></span> compound generator it has to
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            either be convertible to the attribute type,
+          </li>
+<li class="listitem">
+            or it has to expose certain functionalities, i.e. it needs to conform
+            to a concept compatible with the generator.
+          </li>
+</ul></div>
+<p>
+          Each compound generator implements its own set of attribute propagation
+          rules. For a full list of how the different compound generators consume
+          attributes see the section <a class="link" href="../quick_reference/compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+          Attribute Rules</a>.
+        </p>
+<a name="spirit.karma.tutorials.karma_attributes.the_attribute_of_sequence_generators"></a><h6>
+<a name="id715945"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.the_attribute_of_sequence_generators">The
+          Attribute of Sequence Generators</a>
+        </h6>
+<p>
+          Sequences require an attribute type to expose the concept of a fusion sequence,
+          where all elements of that fusion sequence have to be compatible with the
+          corresponding element of the <span class="emphasis"><em>Spirit.Karma</em></span> generator
+          sequence. For example, the expression:
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">double_</span>
+</pre>
+<p>
+          is able to consume any fusion sequence holding two types, where both types
+          have to be convertible to <code class="computeroutput"><span class="keyword">double</span></code>.
+          The first element of the fusion sequence has to be compatible with the
+          attribute of the first <code class="computeroutput"><span class="identifier">double_</span></code>
+          (i.e. it needs to be convertible to a <code class="computeroutput"><span class="keyword">double</span></code>),
+          and the second element of the fusion sequence has to be compatible with
+          the attribute of the second <code class="computeroutput"><span class="identifier">double_</span></code>
+          (i.e. convertible to a <code class="computeroutput"><span class="keyword">double</span></code>
+          as well). If we assume to have an instance of a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span></code>, we can directly use the expression
+          above to generate output for it:
+        </p>
+<pre class="programlisting"><span class="comment">// the following generates: 1.0 2.0
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> 
+    <span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span>             <span class="comment">// generator grammar (format description)
+</span>    <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">,</span>                   <span class="comment">// delimiter grammar
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">));</span>      <span class="comment">// data to use as the attribute 
+</span></pre>
+<p>
+          (where the <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span></code> generator is used as the delimiter,
+          allowing to automatically insert delimiting spaces in between all primitives).
+        </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+            <span class="bold"><strong>For sequences only:</strong></span> <span class="emphasis"><em>Spirit.Karma</em></span>
+            exposes a set of API functions usable mainly with sequences. Very much
+            like the functions of the <code class="computeroutput"><span class="identifier">printf</span></code>
+            family these functions allow to pass the attributes for each of the elements
+            of the sequence separately. Using the corresponding overload of <span class="emphasis"><em>Karma's</em></span>
+            <code class="computeroutput"><span class="identifier">generate</span><span class="special">()</span></code>
+            the expression above could be rewritten as:
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">space</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span></pre>
+<p>
+          </p>
+<p>
+            where the first attribute (<code class="computeroutput"><span class="number">1.0</span></code>)
+            is used for the first <code class="computeroutput"><span class="identifier">double_</span></code>,
+            and the second attribute (<code class="computeroutput"><span class="number">2.0</span></code>)
+            is used for the second <code class="computeroutput"><span class="identifier">double_</span></code>.
+          </p>
+</td></tr>
+</table></div>
+<a name="spirit.karma.tutorials.karma_attributes.the_attribute_of_alternative_generators"></a><h6>
+<a name="id716377"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.the_attribute_of_alternative_generators">The
+          Attribute of Alternative Generators</a>
+        </h6>
+<p>
+          Alternative generators are all about - well - alternatives. In order to
+          store possibly different result (attribute) types from the different alternatives
+          we use the data type Boost.Variant.
+          The main attribute propagation rule of these generators is
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+</pre>
+<p>
+          where the <code class="computeroutput"><span class="identifier">variant</span><span class="special"><></span></code>
+          is again a placeholder for the concept of a Boost.Variant.
+          Any other data type exposing the required concepts can be used instead
+          (for more information about attribute compatibility and attribute concepts
+          see the section Compatible Attributes). Alternatives have a second very
+          important attribute propagation rule:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+</pre>
+<p>
+          often allowing to simplify things significantly. If all sub expressions
+          of a <span class="emphasis"><em>Spirit.Karma</em></span> alternative expose the same attribute
+          type, the overall alternative will expose exactly the same attribute type
+          as well. We will apply this rule later for our complex number generators.
+        </p>
+<a name="spirit.karma.tutorials.karma_attributes.more_about_attributes_of_compound_generators"></a><h6>
+<a name="id716736"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.more_about_attributes_of_compound_generators">More
+          About Attributes of Compound Generators</a>
+        </h6>
+<p>
+          While generating output it is often desirable to combine some constant
+          elements with variable parts. For instance, if we go back to our example
+          of formatting a complex number, we need to write it as <code class="computeroutput"><span class="special">(</span><span class="identifier">real</span><span class="special">,</span> <span class="identifier">imag</span><span class="special">)</span></code>,
+          where <code class="computeroutput"><span class="identifier">real</span></code> and <code class="computeroutput"><span class="identifier">imag</span> </code> are the variables representing
+          the real and imaginary parts of our complex number. As we have already
+          seen, this can be achieved by writing
+        </p>
+<pre class="programlisting"><span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span>
+</pre>
+<p>
+          Fortunately, literals (such as <code class="computeroutput"><span class="char">'('</span></code>
+          and <code class="computeroutput"><span class="string">", "</span></code>) do <span class="emphasis"><em>not</em></span>
+          expose any attribute (well actually, they do expose the special type <code class="computeroutput"><span class="identifier">unused_type</span></code>, but in this context <code class="computeroutput"><span class="identifier">unused_type</span></code> is interpreted as if the
+          generator does not expose any attribute at all). It is very important to
+          understand that the literals don't consume any of the elements of a fusion
+          sequence passed to this generator sequence. As said, they just don't expose
+          any attribute and don't consume any data. The following example shows this:
+        </p>
+<pre class="programlisting"><span class="comment">// the following generates: (1.0, 2.0)
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> 
+    <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span><span class="special">,</span>  <span class="comment">// generator grammar (format description)
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">make_pair</span><span class="special">(</span><span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">));</span>                 <span class="comment">// data to use as the attribute 
+</span></pre>
+<p>
+          where the first element of the pair passed in as the data to generate is
+          still associated with the first <code class="computeroutput"><span class="identifier">double_</span></code>,
+          and the second element is associated with the second <code class="computeroutput"><span class="identifier">double_</span></code>
+          generator.
+        </p>
+<p>
+          This behavior should be familiar as it conforms to the way other output
+          formatting libraries such as <code class="computeroutput"><span class="identifier">printf</span></code>
+          or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></code> are handling their variable parts.
+          In this context you can think about <span class="emphasis"><em>Spirit.Karma</em></span>'s
+          primitive generators (such as the <code class="computeroutput"><span class="identifier">double_</span></code>
+          above) as of being typesafe placeholders for the attribute values to print.
+        </p>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+            Similarly to the tip provided above, this example could be rewritten
+            using <span class="emphasis"><em>Karma's</em></span> multi-attribute API function:
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span><span class="special">,</span> <span class="number">1.0</span><span class="special">,</span> <span class="number">2.0</span><span class="special">);</span></pre>
+<p>
+          </p>
+<p>
+            which provides a clear and comfortable syntax, more similar to the placeholder
+            based syntax as exposed by <code class="computeroutput"><span class="identifier">printf</span></code>
+            or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></code>.
+          </p>
+</td></tr>
+</table></div>
+<p>
+          Let's take a look at this from a more formal perspective. The sequence
+          attribute propagation rules define a special behavior if generators exposing
+          <code class="computeroutput"><span class="identifier">unused_type</span></code> as their attribute
+          are involved (see <a class="link" href="../quick_reference/compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+          Attribute Rules</a>):
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+</pre>
+<p>
+          which reads as:
+        </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+            </p>
+<p>
+              Given <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code> are generators, and <code class="computeroutput"><span class="identifier">A</span></code> is the attribute type of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">unused_type</span></code>
+              is the attribute type of <code class="computeroutput"><span class="identifier">b</span></code>,
+              then the attribute type of <code class="computeroutput"><span class="identifier">a</span>
+              <span class="special"><<</span> <span class="identifier">b</span></code>
+              will be <code class="computeroutput"><span class="identifier">A</span></code> as well.
+              This rule applies regardless of the position the element exposing the
+              <code class="computeroutput"><span class="identifier">unused_type</span></code> is at.
+            </p>
+<p>
+          </p>
+</blockquote></div>
+<p>
+          This rule is the key to the understanding of the attribute handling in
+          sequences as soon as literals are involved. It is as if elements with
+          <code class="computeroutput"><span class="identifier">unused_type</span></code> attributes
+          'disappeared' during attribute propagation. Notably, this is not only true
+          for sequences but for any compound generator in <span class="emphasis"><em>Spirit.Karma</em></span>.
+          For instance, for alternative generators the corresponding rule is:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+</pre>
+<p>
+          again, allowing to simplify the overall attribute type of an expression.
+        </p>
+<a name="spirit.karma.tutorials.karma_attributes.attributes_of_rules_and_grammars"></a><h6>
+<a name="id717476"></a>
+          <a class="link" href="karma_attributes.html#spirit.karma.tutorials.karma_attributes.attributes_of_rules_and_grammars">Attributes
+          of Rules and Grammars</a>
+        </h6>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            explicit attribute type
+          </li>
+<li class="listitem">
+            attribute propagation
+            <div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem">
+                explicit and operator%=
+              </li></ul></div>
+</li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_complex.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_easier_complex.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,160 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Complex - A first more complex generator</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="next" href="karma_attributes.html" title="Understanding Generator Attributes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Complex - A first more complex generator">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.karma_complex"></a><a class="link" href="karma_complex.html" title="Complex - A first more complex generator"> Complex - A
+        first more complex generator</a>
+</h4></div></div></div>
+<p>
+          In this section we will develop a generator for complex numbers, allowing
+          to represent a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code> either as <code class="computeroutput"><span class="special">(</span><span class="identifier">real</span><span class="special">,</span> <span class="identifier">imag</span><span class="special">)</span></code>
+          (where <code class="computeroutput"><span class="identifier">real</span></code> and <code class="computeroutput"><span class="identifier">imag</span></code> are the real and imaginary parts
+          of the complex number) or as a simple <code class="computeroutput"><span class="identifier">real</span></code>
+          if the imaginary part happens to be equal to zero. This example will highlight
+          the power of <span class="emphasis"><em>Spirit.Karma</em></span> allowing to combine compile
+          time definition of formatting rules with runtime based decisions which
+          of the rules to apply. Also this time, we're using Boost.Phoenix
+          to do the semantic actions.
+        </p>
+<p>
+          Our goal is to allow for two different output formats to be applied depending
+          on whether the imaginary part of the complex number is zero or not. Let's
+          write both as a set of alternatives:
+        </p>
+<pre class="programlisting">    <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span>
+<span class="special">|</span>   <span class="identifier">double_</span>
+</pre>
+<p>
+          where the first alternative should be used for numbers having a non-zero
+          imaginary part, while the second is for real numbers. Generally, alternatives
+          are tried in the sequence of their definition as long until one of the
+          expressions (as delimited by <code class="computeroutput"><span class="char">'|'</span></code>)
+          succeeds. If no generator expression succeeds the whole alternative fails.
+        </p>
+<p>
+          If we left this formatting grammar as is our generator would always choose
+          the first alternative. We need to add some additional rules allowing to
+          make the first alternative failing. So, if the first fails the second alternative
+          will be chosen instead. The decision about whether to choose the first
+          alternative has to be made at runtime as only then we actually know the
+          value of the imaginary part of the complex number. <span class="emphasis"><em>Spirit.Karma</em></span>
+          provides us with with a primitive generator <code class="computeroutput"><span class="identifier">eps</span><span class="special">()</span></code>, which is usable as a semantic predicate.
+          It has the property to 'succeed' generating only if its argument is true
+          (while it never generates any output on its own).
+        </p>
+<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">imag</span> <span class="special">=</span> <span class="special">...;</span>     <span class="comment">// imaginary part
+</span>
+    <span class="identifier">eps</span><span class="special">(</span><span class="identifier">imag</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span>
+<span class="special">|</span>   <span class="identifier">double_</span>
+</pre>
+<p>
+          If one of the generator elements of a sequence fails the whole sequence
+          will fail. This is exactly what we need, forcing the second alternative
+          to be chosen for complex numbers with imaginary parts equal to zero.
+        </p>
+<p>
+          Here goes the full example, this time with the proper semantic actions
+          (The full cpp file for this example can be found here: complex_number.cpp).
+        </p>
+<p>
+          We will use the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span></code> type for this and all subsequent
+          related examples. And here you can see the full code of the generator allowing
+          to output a complex number either as a pair of numbers (if the imaginary
+          part is non-zero) or as a single number (if the complex is a real number):
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">generate_complex</span><span class="special">(</span><span class="identifier">OutputIterator</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">c</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">eps</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+
+    <span class="keyword">return</span> <span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span>
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+            <span class="identifier">eps</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">imag</span><span class="special">()</span> <span class="special">!=</span> <span class="number">0</span><span class="special">)</span> <span class="special"><<</span> 
+            <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">real</span><span class="special">()]</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">imag</span><span class="special">()]</span> <span class="special"><<</span> <span class="char">')'</span>
+        <span class="special">|</span>   <span class="identifier">double_</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">real</span><span class="special">()]</span>
+        <span class="special">)</span>
+        <span class="comment">//  End grammar
+</span>    <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The <code class="computeroutput"><span class="identifier">double_</span></code> generators
+          have this semantic action attached:
+        </p>
+<pre class="programlisting"><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">n</span>
+</pre>
+<p>
+          which passes <code class="computeroutput"><span class="identifier">n</span></code> to the first
+          element of the generator the semantic action is attached to. Remember,
+          semantic actions in <span class="emphasis"><em>Spirit.Karma</em></span> are called before
+          the corresponding generator is invoked and they are expected to provide
+          the generator with the data to be used. The semantic action above assigns
+          the value to be generated (<code class="computeroutput"><span class="identifier">n</span></code>)
+          to the generator (actually, the attribute of <code class="computeroutput"><span class="identifier">double_</span></code>).
+          <code class="computeroutput"><span class="identifier">_1</span></code> is a Phoenix placeholder
+          referring to the attribute of the generator the semantic action is attached
+          to. If you need more information about semantic actions, you may want to
+          read about those in this section: <a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic
+          Actions</a>.
+        </p>
+<p>
+          These semantic actions are easy to understand but have the unexpected side
+          effect of being slightly less efficient than it could be. In addition they
+          tend to make the formatting grammar less readable. We will see in one of
+          the next sections how it is possible to use other, builtin features of
+          <span class="emphasis"><em>Spirit.Karma</em></span> to get rid of the semantic actions alltogether.
+          When writing your grammars in Spirit you should always try to avoid semantic
+          actions which is often possible. Semantic actions are really powerful tools
+          but grammars tend to be more efficient and readable without them.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,229 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Complex - Made easier</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="karma_attributes.html" title="Understanding Generator Attributes">
+<link rel="next" href="../quick_reference.html" title="Quick Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Complex - Made easier">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.karma_easier_complex"></a><a class="link" href="karma_easier_complex.html" title="Complex - Made easier"> Complex
+        - Made easier</a>
+</h4></div></div></div>
+<p>
+          In one of the previous sections we showed how to format a complex number
+          (i.e. a pair of doubles). In this section we will build on this example
+          with the goal to avoid to use semantic actions in the format specification.
+          Let's have a look at the resulting code first, trying to understand it
+          afterwards (the full source file for this example can be found here: complex_number_easier.cpp):
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">generate_complex</span><span class="special">(</span><span class="identifier">OutputIterator</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">c</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">omit</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">;</span>
+
+    <span class="keyword">return</span> <span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span>
+
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+           <span class="special">!</span><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span>
+        <span class="special">|</span>   <span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span>
+        <span class="special">),</span>
+        <span class="comment">//  End grammar
+</span>
+        <span class="identifier">c</span><span class="special">.</span><span class="identifier">imag</span><span class="special">(),</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">real</span><span class="special">(),</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">imag</span><span class="special">()</span>     <span class="comment">//  Data to output
+</span>    <span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Let's try to cover some basic library features first.
+        </p>
+<a name="spirit.karma.tutorials.karma_easier_complex.making_numeric_generators_fail"></a><h6>
+<a name="id717955"></a>
+          <a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.making_numeric_generators_fail">Making
+          Numeric Generators Fail</a>
+        </h6>
+<p>
+          All <a class="link" href="../reference/numeric.html" title="Numeric">numeric generators</a>
+          (such as <code class="computeroutput"><span class="identifier">double_</span></code>, et.al.)
+          take the value to emit from an attached attribute. In addition, they may
+          be initialized from a literal value. For instance, to emit a constant
+          <code class="computeroutput"><span class="number">0.0</span></code> you may write: <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>. The
+          difference to a simple <code class="computeroutput"><span class="number">0.0</span></code>
+          or <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code> is that
+          the <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code> consumes
+          an attribute, if one is available. Additionally, it compares its immediate
+          value to the value of the supplied attribute, and fails if those are not
+          equal. This feature, namely to succeed generating only if the attribute
+          matches the immediate value, enables numeric generators to be used to dynamically
+          control the way output is generated.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            There are more generators exposing the feature to fail if their immediate
+            value is not equal to the supplied attribute. Here are some: all <a class="link" href="../reference/char.html" title="Char">Character Generators</a>, all
+            <a class="link" href="../reference/string.html" title="String">String Generators</a>.
+            Generally, all generators having a sibling created by a variant of <code class="computeroutput"><span class="identifier">lit</span><span class="special">()</span></code>
+            belong into this category.
+          </p></td></tr>
+</table></div>
+<a name="spirit.karma.tutorials.karma_easier_complex.predicates___the_conditionals_for_output_generators"></a><h6>
+<a name="id718080"></a>
+          <a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.predicates___the_conditionals_for_output_generators">Predicates
+          - The Conditionals for Output Generators</a>
+        </h6>
+<p>
+          In addition to the <a class="link" href="../reference/auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a> generator mentioned earlier
+          <span class="emphasis"><em>Spirit.Karma</em></span> provides two special operators enabling
+          dynamic flow control: the <a class="link" href="../reference/operator/and_predicate.html" title="And Predicate (&a)">and
+          predicate (unary <code class="computeroutput"><span class="special">&</span></code>)</a>
+          and the <a class="link" href="../reference/operator/not_predicate.html" title="Not Predicate (!a)">not
+          predicate (unary <code class="computeroutput"><span class="special">!</span></code>)</a>.
+          The main property of both predicates is to discard all output emitted by
+          the generator they are attached to. This is equivalent to the behaviour
+          of predicates used for parsing. There the predicates do not consume any
+          input allowing to look ahead in the input stream. The and predicate succeeds
+          as long as its associated generator suceeds, while the not predicate succeeds
+          only if its associated generator fails.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            The generator predicates in <span class="emphasis"><em>Spirit.Karma</em></span> consume
+            an attribute, if available. This makes them behave differently from predicates
+            in <span class="emphasis"><em>Spirit.Qi</em></span>, where they do not expose any attribute.
+            This is because predicates allow to make decisions based on data available
+            only at runtime. While in <span class="emphasis"><em>Spirit.Qi</em></span> during parsing
+            the decision is made based on the look ahead input, in <span class="emphasis"><em>Spirit.Karma</em></span>
+            the criteria has to be supplied by the user. The simplest way to do this
+            is by providing an attribute.
+          </p></td></tr>
+</table></div>
+<a name="spirit.karma.tutorials.karma_easier_complex.ignoring_supplied_attributes"></a><h6>
+<a name="id718157"></a>
+          <a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.ignoring_supplied_attributes">Ignoring
+          Supplied Attributes</a>
+        </h6>
+<p>
+          Sometimes it is desirable to 'skip' (i.e. ignore) a provided attribute.
+          This happens for instance in alternative generators, where some of the
+          alternatives need to extract only part of the overall attribute passed
+          to the alternative generator. <span class="emphasis"><em>Spirit.Karma</em></span> has a special
+          pseudo generator for that: the directive <a class="link" href="../reference/directive/omit.html" title="Consume Attribute (omit[])"><code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>.
+          This directive consumes an attribute of the type defined by its embedded
+          generator but it does not emit any output.
+        </p>
+<a name="spirit.karma.tutorials.karma_easier_complex.putting_everything_together"></a><h6>
+<a name="id718198"></a>
+          <a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.putting_everything_together">Putting
+          everything together</a>
+        </h6>
+<p>
+          Very similar to our first example ealier we use two alternatives to allow
+          for two different output formats depending on whether the imaginery part
+          of the complex number is equal to zero or not. The first alternative is
+          executed if the imaginary part is not zero, the second alternative otherwise.
+          This time we make the decision during runtime using the <a class="link" href="../reference/operator/not_predicate.html" title="Not Predicate (!a)">not
+          predicate (unary <code class="computeroutput"><span class="special">!</span></code>)</a>
+          (the <code class="computeroutput"><span class="keyword">operator</span><span class="special">!</span></code>)
+          combined with the feature of many Karma primitive generators allowing them
+          to <span class="emphasis"><em>fail</em></span> under certain conditions. Here is the first
+          alternative again for your reference:
+        </p>
+<pre class="programlisting"><span class="special">!</span><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'('</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="string">", "</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="char">')'</span>
+</pre>
+<p>
+          The generator <code class="computeroutput"><span class="special">!</span><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>
+          does several things. First, because of the <a class="link" href="../reference/operator/not_predicate.html" title="Not Predicate (!a)">not
+          predicate (unary <code class="computeroutput"><span class="special">!</span></code>)</a>,
+          it succeeds only if the <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>
+          generator <span class="emphasis"><em>fails</em></span>, making the whole first alternative
+          fail otherwise. Second, the <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>
+          generator succeeds only if the value of its attribute is equal to its immediate
+          parameter (i.e. in this case <code class="computeroutput"><span class="number">0.0</span></code>).
+          Third, the not predicate does not emit any output (regardless whether it
+          succeeds or fails), discarding any possibble output emitted by the <code class="computeroutput"><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>.
+        </p>
+<p>
+          As we pass the imaginery part of the complex number as the attribute value
+          for the <code class="computeroutput"><span class="special">!</span><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>,
+          the overall first alternative will be chosen only if it is not equal to
+          zero (the <code class="computeroutput"><span class="special">!</span><span class="identifier">double_</span><span class="special">(</span><span class="number">0.0</span><span class="special">)</span></code>
+          does not fail). Exactly what we need!
+        </p>
+<p>
+          Now, the second alternative simply needs to emit the real part of the complex
+          number only. In order to simplify the overall grammar we strive to unify
+          the attribute types of all alternatives. As the attribute type exposed
+          by the first alternative is <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span></code>, we need to skip the first and last
+          element of the attribute (remember, we pass the real part as the second
+          attribute element). We achieve this by using the <code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code> directive:
+        </p>
+<pre class="programlisting"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">double_</span><span class="special">]</span>
+</pre>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            Generally, it is preferrable to use generator constructs not requiring
+            semantic actions. The reason is that semantic actions often use constructs
+            like: <code class="computeroutput"><span class="identifier">double_</span><span class="special">[</span><span class="identifier">_1</span> <span class="special">=</span> <span class="identifier">c</span><span class="special">.</span><span class="identifier">real</span><span class="special">()]</span></code>.
+            But this assignment is a real one! The data is really <span class="emphasis"><em>copied</em></span>
+            to the attribute value of the generator the action is attached to. On
+            the other hand, grammars without anz semantic actions usually don't have
+            to copy the attributes, making them more efficient.
+          </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quick Start</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="../tutorials.html" title="Tutorials">
+<link rel="next" href="warming_up.html" title="Warming up">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="warming_up.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quick Start">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
+</h4></div></div></div>
+<a name="spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_"></a><h6>
+<a name="id710017"></a>
+          <a class="link" href="quick_start.html#spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_">Spirit.Karma
+          - what's that?</a>
+        </h6>
+<p>
+          Throughout the description of <span class="emphasis"><em>Spirit.Karma</em></span> we will
+          try to align ourselves very much with the documentation for <span class="emphasis"><em>Spirit.Qi</em></span>.
+          The reasons are manyfold:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<span class="emphasis"><em>Spirit.Karma</em></span> is the counterpart to <span class="emphasis"><em>Spirit.Qi</em></span>.
+            Some people say it's the Yin to <span class="emphasis"><em>Spirit.Qi</em></span>'s Yang.
+            <span class="emphasis"><em>Spirit.Karma</em></span> is to generating byte sequences from
+            internal data structures as <span class="emphasis"><em>Spirit.Qi</em></span> is parsing
+            byte sequences into those (very same) internal data structures.
+          </li>
+<li class="listitem">
+            Both libraries have an almost identical structure, very similar semantics,
+            and are both built using identical tools. Both libraries implement a
+            language casting the specifics of their domain (parsing and generating)
+            into a simple interface.
+          </li>
+</ul></div>
+<p>
+          Why should you use a generator library for such a simple thing as output
+          generation? Programmers have been using printf, std::stream formatting,
+          or boost::format for quite some time. The answer is - yes, for simple output
+          formatting tasks those familiar tools might be a quick solution. But experience
+          shows: as soon as the formatting requirements are becomming more complex
+          output generation is getting more and more challanging in terms of readability,
+          maintainabilty, and flexibility of the code. Last, but not least, it turns
+          out that code using <span class="emphasis"><em>Spirit.Karma</em></span> runs much faster
+          than equivalent code using either of the 'straight' methods mentioned above
+          (see here for some numbers: <a class="link" href="../performance_measurements/numeric_performance.html" title="Performance of Numeric Generators">Performance
+          of Numeric Generators</a>)
+        </p>
+<p>
+          You might argue that more complex tasks require more complex tools. But
+          this turns out to be not the case! The whole Spirit library is designed
+          to be simple to use, while being scalable from trivial to very complicated
+          applications.
+        </p>
+<p>
+          In terms of development simplicity and ease in deployment, the same is
+          true for <span class="emphasis"><em>Spirit.Karma</em></span> as has been described elsewhere
+          in this docs for <span class="emphasis"><em>Spirit.Qi</em></span>: the entire library consists
+          of only header files, with no libraries to link against or build. Just
+          put the spirit distribution in your include path, compile and run. Code
+          size? -very tight -essentially comparable to hand written code.
+        </p>
+<p>
+          The <span class="emphasis"><em>Spirit.Karma</em></span> tutorials are build in a walk through
+          style, starting with elementary things growing step by step in complexity.
+          And again: keep in mind output generation is the exact opposite to parsing.
+          Everything you already learnt about parsing using <span class="emphasis"><em>Spirit.Qi</em></span>
+          is applicable to generating formatted output using <span class="emphasis"><em>Spirit.Karma</em></span>.
+          All you have to do is to look at <span class="emphasis"><em>Spirit.Karma</em></span> as being
+          a mirrored imaged of <span class="emphasis"><em>Spirit.Qi</em></span>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="warming_up.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,306 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="warming_up.html" title="Warming up">
+<link rel="next" href="karma_complex.html" title="Complex - A first more complex generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="warming_up.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_complex.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.semantic_actions"></a><a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic Actions</a>
+</h4></div></div></div>
+<p>
+          In the previous section we mentioned a very important difference between
+          parsers and generators. While parsers may be used without 'producing' any
+          data, generators alsways need data to generate the output from. We mentioned
+          one way of passing data to the generator by supplying it as a parameter
+          to one of the main API functions (for instance <code class="computeroutput"><span class="identifier">generate</span><span class="special">()</span></code> or <code class="computeroutput"><span class="identifier">generate_delimited</span><span class="special">()</span></code>). But sometimes this is not possible
+          or not desireable.
+        </p>
+<p>
+          Very much like for <span class="emphasis"><em>Spirit.Qi</em></span> we have semantic actions
+          in <span class="emphasis"><em>Spirit.Karma</em></span> as well. Semantic actions may be attached
+          to any point in the grammar specification. These actions are C++ functions
+          or function objects that are called whenever a part of the generator is
+          about to be invoked. Say you have a generator <code class="computeroutput"><span class="identifier">G</span></code>,
+          and a C++ function <code class="computeroutput"><span class="identifier">F</span></code>, you
+          can make the generator call <code class="computeroutput"><span class="identifier">F</span></code>
+          just before it gets invoked by attaching <code class="computeroutput"><span class="identifier">F</span></code>:
+        </p>
+<pre class="programlisting"><span class="identifier">G</span><span class="special">[</span><span class="identifier">F</span><span class="special">]</span>
+</pre>
+<p>
+          The expression above links <code class="computeroutput"><span class="identifier">F</span></code>
+          to the generator, <code class="computeroutput"><span class="identifier">G</span></code>.
+        </p>
+<p>
+          Semantic actions in <span class="emphasis"><em>Spirit.Qi</em></span> are invoked after a
+          parser successfully matches its input and the matched value is passed into
+          the semantic action. In <span class="emphasis"><em>Spirit.Karma</em></span> the opposite
+          happens. Semantic actions are called before its associated generator is
+          invoked. They may provide the data to be generated to the generator.
+        </p>
+<p>
+          The function/function object signature depends on the type of the generator
+          to which it is attached. The generator <code class="computeroutput"><span class="identifier">double_</span></code>
+          expects the number to generate. Thus, if we were to attach a function
+          <code class="computeroutput"><span class="identifier">F</span></code> to <code class="computeroutput"><span class="identifier">double_</span></code>,
+          we need <code class="computeroutput"><span class="identifier">F</span></code> to be declared
+          as:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">F</span><span class="special">(</span><span class="keyword">double</span><span class="special">&</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+          where the function is expected to initialize the parameter <code class="computeroutput"><span class="identifier">n</span></code> with the value to generate.
+        </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+            Generally, and more formally, the semantic action <code class="computeroutput"><span class="identifier">F</span></code>
+            attached to a generator <code class="computeroutput"><span class="identifier">G</span></code>
+            needs to take a reference to the generators attribute type as its first
+            parameter. For more information about generator attributes please see
+            the section Generator Attributes.
+          </p>
+<p>
+            In the example above the function F takes a <code class="computeroutput"><span class="keyword">double</span><span class="special">&</span></code> as its first parameter as the attribute
+            of the <code class="computeroutput"><span class="identifier">double_</span></code> generator
+            happens to be a <code class="computeroutput"><span class="keyword">double</span></code>.
+          </p>
+</td></tr>
+</table></div>
+<p>
+          There are actually 2 more arguments being passed (the generator context
+          and a reference to a boolean 'pass' parameter). We don't need these, for
+          now, but we'll see more on these other arguments later. <span class="emphasis"><em>Spirit.Karma</em></span>
+          allows us to bind a single argument function, like above. The other arguments
+          are simply ignored.
+        </p>
+<p>
+          Overall, the possible signatures for semantic actions are:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attr</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="keyword">bool</span><span class="special">&);</span>
+</pre>
+<p>
+          In the following example we present various ways to attach semantic actions:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Using plain function pointer
+          </li>
+<li class="listitem">
+            Using simple function object
+          </li>
+<li class="listitem">
+            Using Boost.Bind with
+            a plain function
+          </li>
+<li class="listitem">
+            Using Boost.Bind with
+            a member function
+          </li>
+<li class="listitem">
+            Using Boost.Lambda
+</li>
+</ul></div>
+<p>
+          Let's assume we have:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">client</span>
+<span class="special">{</span>
+    <span class="keyword">namespace</span> <span class="identifier">karma</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">;</span>
+
+    <span class="comment">// A plain function
+</span>    <span class="keyword">void</span> <span class="identifier">read_function</span><span class="special">(</span><span class="keyword">int</span><span class="special">&</span> <span class="identifier">i</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="identifier">i</span> <span class="special">=</span> <span class="number">42</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="comment">// A member function
+</span>    <span class="keyword">struct</span> <span class="identifier">reader</span>
+    <span class="special">{</span>
+        <span class="keyword">void</span> <span class="identifier">print</span><span class="special">(</span><span class="keyword">int</span><span class="special">&</span> <span class="identifier">i</span><span class="special">)</span> <span class="keyword">const</span>
+        <span class="special">{</span>
+            <span class="identifier">i</span> <span class="special">=</span> <span class="number">42</span><span class="special">;</span>
+        <span class="special">}</span>
+    <span class="special">};</span>
+
+    <span class="comment">// A function object
+</span>    <span class="keyword">struct</span> <span class="identifier">read_action</span>
+    <span class="special">{</span>
+        <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">int</span><span class="special">&</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span>
+        <span class="special">{</span>
+            <span class="identifier">i</span> <span class="special">=</span> <span class="number">42</span><span class="special">;</span>
+        <span class="special">}</span>
+    <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Take note that with function objects, we need to have an <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
+          with 3 arguments. Since we don't care about the other two, we can use
+          <code class="computeroutput"><span class="identifier">unused_type</span></code> for these.
+          We'll see more of <code class="computeroutput"><span class="identifier">unused_type</span></code>
+          elsewhere. Get used to it. <code class="computeroutput"><span class="identifier">unused_type</span></code>
+          is a Spirit supplied support class. Most of the time it stands for 'I don't
+          care, just use the appropriate default'.
+        </p>
+<p>
+          All following examples generate outputs of the form:
+        </p>
+<pre class="programlisting"><span class="string">"{integer}"</span>
+</pre>
+<p>
+          An integer inside the curly braces.
+        </p>
+<p>
+          The first example shows how to attach a plain function:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">outiter</span><span class="special">,</span> <span class="char">'{'</span> <span class="special"><<</span> <span class="identifier">int_</span><span class="special">[&</span><span class="identifier">read_function</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          What's new? Well <code class="computeroutput"><span class="identifier">int_</span></code> is
+          the sibbling of <code class="computeroutput"><span class="identifier">double_</span></code>.
+          I'm sure you can guess what this generator does and what type of attribute
+          it expects.
+        </p>
+<p>
+          The next example shows how to attach a simple function object:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">outiter</span><span class="special">,</span> <span class="char">'{'</span> <span class="special"><<</span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">read_action</span><span class="special">()]</span> <span class="special"><<</span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          We can use Boost.Bind
+          to 'bind' member functions:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">reader</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">outiter</span><span class="special">,</span> <span class="char">'{'</span> <span class="special"><<</span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(&</span><span class="identifier">reader</span><span class="special">::</span><span class="identifier">print</span><span class="special">,</span> <span class="special">&</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">_1</span><span class="special">)]</span> <span class="special"><<</span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Likewise, we can also use Boost.Bind
+          to 'bind' plain functions:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">generate</span><span class="special">(</span><span class="identifier">outiter</span><span class="special">,</span> <span class="char">'{'</span> <span class="special"><<</span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(&</span><span class="identifier">read_function</span><span class="special">,</span> <span class="identifier">_1</span><span class="special">)]</span> <span class="special"><<</span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          And last but not least, we can also use Boost.Lambda:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">(</span><span class="string">"42"</span><span class="special">);</span>
+<span class="identifier">generate</span><span class="special">(</span><span class="identifier">outiter</span><span class="special">,</span> <span class="char">'{'</span> <span class="special"><<</span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">strm</span> <span class="special">>></span> <span class="identifier">lambda</span><span class="special">::</span><span class="identifier">_1</span><span class="special">]</span> <span class="special"><<</span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          There are more ways to bind semantic action functions, but the examples
+          above are the most common. Attaching semantic actions is the first hurdle
+          one has to tackle when getting started with generating with Spirit. If
+          you didn't do so yet, it is probably a good idea to familiarize yourself
+          with the tools behind it such as Boost.Bind
+          and Boost.Lambda.
+        </p>
+<p>
+          The examples above can be found here: actions.cpp
+        </p>
+<a name="spirit.karma.tutorials.semantic_actions.phoenix"></a><h6>
+<a name="id714514"></a>
+          <a class="link" href="semantic_actions.html#spirit.karma.tutorials.semantic_actions.phoenix">Phoenix</a>
+        </h6>
+<p>
+          Phoenix, a companion
+          library bundled with Spirit, is specifically suited for binding semantic
+          actions. It is like Boost.Lambda
+          on steroids, with special custom features that make it easy to integrate
+          semantic actions with Spirit. If your requirements go beyond simple to
+          moderate generation, I suggest you use this library. Examples presented
+          henceforth shall be using the Phoenix library exclusively.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="warming_up.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="karma_complex.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,316 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Warming up</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="quick_start.html" title="Quick Start">
+<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Warming up">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.tutorials.warming_up"></a><a class="link" href="warming_up.html" title="Warming up">Warming up</a>
+</h4></div></div></div>
+<p>
+          Learning how to use <span class="emphasis"><em>Spirit.Karma</em></span> is really simple.
+          We will start from trivial examples, ramping up as we go.
+        </p>
+<a name="spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number"></a><h6>
+<a name="id711074"></a>
+          <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number">Trivial
+          Example #1 Generating a number</a>
+        </h6>
+<p>
+          Let's create a generator that will output a floating-point number:
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span>
+</pre>
+<p>
+          Easy huh? The above code actually instantiates a Spirit floating point
+          generator (a built-in generator). Spirit has many pre-defined generators
+          and consistent naming conventions will help you finding your way through
+          the maze. Especially important to note is that things related to identical
+          entities (as in this case, floating point numbers) are named identically
+          in <span class="emphasis"><em>Spirit.Karma</em></span> and in <span class="emphasis"><em>Spirit.Qi</em></span>.
+          Actually, both libraries are using the very same variable instance to refer
+          to a floating point generator or parser: <code class="computeroutput"><span class="identifier">double_</span></code>.
+        </p>
+<a name="spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers"></a><h6>
+<a name="id711117"></a>
+          <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers">Trivial
+          Example #2 Generating two numbers</a>
+        </h6>
+<p>
+          Now, let's create a generator that will output a line consisting of two
+          floating-point numbers.
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">double_</span>
+</pre>
+<p>
+          Here you see the familiar floating-point numeric generator <code class="computeroutput"><span class="identifier">double_</span></code> used twice, once for each number.
+          If you are used to see the <code class="computeroutput"><span class="char">'>>'</span></code>
+          operator for concatenating two parsers in <span class="emphasis"><em>Spirit.Qi</em></span>
+          you might wonder, what's that <code class="computeroutput"><span class="char">'<<'</span></code>
+          operator doing in there? We decided to distinguish generating and parsing
+          of sequences the same way as the std::stream libraries do: we use operator
+          <code class="computeroutput"><span class="char">'>>'</span></code> for input (parsing),
+          and operator <code class="computeroutput"><span class="char">'<<'</span></code> for output
+          (generating). Other than that there is no significant difference. The above
+          program creates a generator from two simpler generators, glueing them together
+          with the sequence operator. The result is a generator that is a composition
+          of smaller generators. Whitespace between numbers can implicitly be inserted
+          depending on how the generator is invoked (see below).
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            When we combine generators, we end up with a "bigger" generator,
+            but it's still a generator. Generators can get bigger and bigger, nesting
+            more and more, but whenever you glue two generators together, you end
+            up with one bigger generator. This is an important concept.
+          </p></td></tr>
+</table></div>
+<a name="spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers"></a><h6>
+<a name="id711202"></a>
+          <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers">Trivial
+          Example #3 Generating one or more numbers</a>
+        </h6>
+<p>
+          Now, creating output for two numbers is not too interesting. Let's create
+          a generator that will output zero or more floating-point numbers in a row.
+        </p>
+<pre class="programlisting"><span class="special">*</span><span class="identifier">double_</span>
+</pre>
+<p>
+          This is like a regular-expression Kleene Star. We moved the <code class="computeroutput"><span class="special">*</span></code> to the front for the same reasons we did
+          in <span class="emphasis"><em>Spirit.Qi</em></span>: we must work with the syntax rules of
+          C++. But if you know regular expressions (and for sure you remember those
+          C++ syntax rules) it will start to look very familiar in a matter of a
+          very short time.
+        </p>
+<p>
+          Any expression that evaluates to a generator may be used with the Kleene
+          Star. Keep in mind, though, that due to C++ operator precedence rules you
+          may need to put the expression in parentheses for complex expressions.
+          As above, whitespace can be inserted implicitely in between the generated
+          numbers, if needed.
+        </p>
+<a name="spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers"></a><h6>
+<a name="id711250"></a>
+          <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers">Trivial
+          Example #4 Generating a comma-delimited list of numbers</a>
+        </h6>
+<p>
+          We follow the lead of <span class="emphasis"><em>Spirit.Qi</em></span>'s warming up section
+          and will create a generator that produces a comma-delimited list of numbers.
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special"><<</span> <span class="special">*(</span><span class="identifier">lit</span><span class="special">(</span><span class="char">','</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">)</span>
+</pre>
+<p>
+          Notice <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="char">','</span><span class="special">)</span></code>. It is
+          a literal character generator that simply generates the comma <code class="computeroutput"><span class="char">','</span></code>. In this case, the Kleene Star is modifying
+          a more complex generator, namely, the one generated by the expression:
+        </p>
+<pre class="programlisting"><span class="special">(</span><span class="identifier">lit</span><span class="special">(</span><span class="char">','</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">)</span>
+</pre>
+<p>
+          Note that this is a case where the parentheses are necessary. The Kleene
+          Star encloses the complete expression above, repeating the whole pattern
+          in the generated output zero or more times.
+        </p>
+<a name="spirit.karma.tutorials.warming_up.let_s_generate_"></a><h6>
+<a name="id711385"></a>
+          <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.let_s_generate_">Let's
+          Generate!</a>
+        </h6>
+<p>
+          We're done with defining the generator. All what's left is to invoke the
+          generator to do its work. For now, we will use the <code class="computeroutput"><span class="identifier">generate_delimited</span></code>
+          function. One overload of this function accepts four arguments:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            An output iterator accepting the generated characters
+          </li>
+<li class="listitem">
+            The generator expression
+          </li>
+<li class="listitem">
+            Another generator called the delimiting generator
+          </li>
+<li class="listitem">
+            The data to format and output
+          </li>
+</ol></div>
+<p>
+          While comparing this minimal example with an equivalent parser example
+          we notice a significant difference. It is possible (and actually, it makes
+          a lot of sense) to use a parser without creating any internal representation
+          of the parsed input (i.e. without 'producing' any data from the parsed
+          input). Using a parser in this mode checks the provided input against the
+          given parser expression allowing to verify whether the input is parsable.
+          For generators this mode doesn't make any sense. What is output generation
+          without generating any output? So we always will have to supply the data
+          the output should be generated from. In our example we supply a vector
+          of <code class="computeroutput"><span class="keyword">double</span></code> numbers as the last
+          parameter to the function <code class="computeroutput"><span class="identifier">generate_delimited</span></code>
+          (see code below).
+        </p>
+<p>
+          In this example, we wish to delimit the generated numbers by spaces. Another
+          generator named <code class="computeroutput"><span class="identifier">space</span></code> is
+          included in Spirit's repertoire of predefined generators. It is a very
+          trivial generator that simply produces spaces. It is the equivalent to
+          writing <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="char">' '</span><span class="special">)</span></code>, or simply
+          <code class="computeroutput"><span class="char">' '</span></code>. It has been implemented
+          for similarity with the corresponding predefined <code class="computeroutput"><span class="identifier">space</span></code>
+          parser. We will use <code class="computeroutput"><span class="identifier">space</span></code>
+          as our delimiter. The delimiter is the one responsible for inserting characters
+          in between generator elements such as the <code class="computeroutput"><span class="identifier">double_</span></code>
+          and <code class="computeroutput"><span class="identifier">lit</span></code>.
+        </p>
+<p>
+          Ok, so now let's generate (for the complete source code of this example
+          please refer to num_list1.cpp).
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">OutputIterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">generate_numbers</span><span class="special">(</span><span class="identifier">OutputIterator</span> <span class="identifier">sink</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">v</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate_delimited</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">generate_delimited</span><span class="special">(</span>
+        <span class="identifier">sink</span><span class="special">,</span>                           <span class="callout_bug"><a class="co" name="spirit4co" href="warming_up.html#spirit4"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a></span>
+        <span class="identifier">double_</span> <span class="special"><<</span> <span class="special">*(</span><span class="char">','</span> <span class="special"><<</span> <span class="identifier">double_</span><span class="special">),</span>   <span class="callout_bug"><a class="co" name="spirit5co" href="warming_up.html#spirit5"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a></span>
+        <span class="identifier">space</span><span class="special">,</span>                          <span class="callout_bug"><a class="co" name="spirit6co" href="warming_up.html#spirit6"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a></span>
+        <span class="identifier">v</span>                               <span class="callout_bug"><a class="co" name="spirit7co" href="warming_up.html#spirit7"><img src="../../../../../../../doc/src/images/callouts/4.png" alt="4" border="0"></a></span>
+    <span class="special">);</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+          </p>
+<p>
+            </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit4"></a>
 </p></td>
+<td valign="top" align="left"><p> destination: output iterator </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit5"></a>
 </p></td>
+<td valign="top" align="left"><p> the generator </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit6"></a>
 </p></td>
+<td valign="top" align="left"><p> the delimiter-generator </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit7"></a>
 </p></td>
+<td valign="top" align="left"><p> the
+            data to output </p></td>
+</tr>
+</table></div>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The generate function returns <code class="computeroutput"><span class="keyword">true</span></code>
+          or <code class="computeroutput"><span class="keyword">false</span></code> depending on the
+          result of the output generation. As outlined in different places of this
+          documentation, a generator may fail for different reasons. One of the possible
+          reasons is an error in the underlying output iterator (memory exhausted
+          or disk full, etc.). Another reason might be that the data doesn't match
+          the requirements of a particular generator.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+            <code class="computeroutput"><span class="keyword">char</span></code> and <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+            operands
+          </p>
+<p>
+            The careful reader may notice that the parser expression has <code class="computeroutput"><span class="char">','</span></code> instead of <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="char">','</span><span class="special">)</span></code>
+            as the previous examples did. This is ok due to C++ syntax rules of conversion.
+            Spirit provides <code class="computeroutput"><span class="special"><<</span></code>
+            operators that are overloaded to accept a <code class="computeroutput"><span class="keyword">char</span></code>
+            or <code class="computeroutput"><span class="keyword">wchar_t</span></code> argument on its
+            left or right (but not both). An operator may be overloaded if at least
+            one of its parameters is a user-defined type. In this case, the <code class="computeroutput"><span class="identifier">double_</span></code> is the 2nd argument to <code class="computeroutput"><span class="keyword">operator</span><span class="special"><<</span></code>,
+            and so the proper overload of <code class="computeroutput"><span class="special"><<</span></code>
+            is used, converting <code class="computeroutput"><span class="char">','</span></code> into
+            a character literal parser.
+          </p>
+<p>
+            The problem with omiting the <code class="computeroutput"><span class="identifier">lit</span></code>
+            should be obvious: <code class="computeroutput"><span class="char">'a'</span> <span class="special"><<</span>
+            <span class="char">'b'</span></code> is not a spirit generator, it
+            is a numeric expression, left-shifting the ASCII (or another encoding)
+            value of <code class="computeroutput"><span class="char">'a'</span></code> by the ASCII value
+            of <code class="computeroutput"><span class="char">'b'</span></code>. However, both <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special"><<</span>
+            <span class="char">'b'</span></code> and <code class="computeroutput"><span class="char">'a'</span>
+            <span class="special"><<</span> <span class="identifier">lit</span><span class="special">(</span><span class="char">'b'</span><span class="special">)</span></code>
+            are Spirit sequence generators for the letter <code class="computeroutput"><span class="char">'a'</span></code>
+            followed by <code class="computeroutput"><span class="char">'b'</span></code>. You'll get
+            used to it, sooner or later.
+          </p>
+</td></tr>
+</table></div>
+<p>
+          Note that we inlined the generator directly in the call to <code class="computeroutput"><span class="identifier">generate_delimited</span></code>. Upon calling this
+          function, the expression evaluates into a temporary, unnamed generator
+          which is passed into the <code class="computeroutput"><span class="identifier">generate_delimited</span></code>
+          function, used, and then destroyed.
+        </p>
+<p>
+          Here, we chose to make the generate function generic by making it a template,
+          parameterized by the output iterator type. By doing so, it can put the
+          generated data into any STL conforming output iterator.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,93 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lex - Writing Lexical Analyzers</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="karma/performance_measurements/numeric_performance/format_performance.html" title="Comparing the performance of a sequence of several generators">
+<link rel="next" href="lex/lexer_introduction.html" title="Introduction to Spirit.Lex">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma/performance_measurements/numeric_performance/format_performance.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lex - Writing Lexical Analyzers">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.lex"></a><a class="link" href="lex.html" title="Lex - Writing Lexical Analyzers"> Lex - Writing Lexical Analyzers</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Introduction to Spirit.Lex</span></dt>
+<dt><span class="section"><a href="lex/tutorials.html"> <span class="emphasis"><em>Spirit.Lex</em></span>
+      Tutorials</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="lex/tutorials/lexer_tutorials.html"> <span class="emphasis"><em>Spirit.Lex</em></span>
+        Tutorials Overview</a></span></dt>
+<dt><span class="section"><a href="lex/tutorials/lexer_quickstart1.html"> Quickstart
+        1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a></span></dt>
+<dt><span class="section"><a href="lex/tutorials/lexer_quickstart2.html"> Quickstart
+        2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a></span></dt>
+<dt><span class="section"><a href="lex/tutorials/lexer_quickstart3.html"> Quickstart
+        3 - Counting Words Using a Parser</a></span></dt>
+</dl></dd>
+<dt><span class="section"> Abstracts</span></dt>
+<dd><dl>
+<dt><span class="section">Lexer Primitives</span></dt>
+<dt><span class="section"><a href="lex/abstracts/lexer_tokenizing.html"> Tokenizing
+        Input Data</a></span></dt>
+<dt><span class="section"><a href="lex/abstracts/lexer_semantic_actions.html"> Lexer
+        Semantic Actions</a></span></dt>
+<dt><span class="section"><a href="lex/abstracts/lexer_static_model.html"> The <span class="emphasis"><em>Static</em></span>
+        Lexer Model</a></span></dt>
+<dt><span class="section"><a href="lex/abstracts/lexer_parsing.html"> Parsing using
+        a Lexer</a></span></dt>
+<dt><span class="section"> Lexer Attributes</span></dt>
+<dt><span class="section"> Lexer States</span></dt>
+</dl></dd>
+<dt><span class="section"> Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="lex/quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="lex/quick_reference/lexers.html"> Primitive Lexer
+        Components</a></span></dt>
+<dt><span class="section"><a href="lex/quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></dd>
+<dt><span class="section"> Reference</span></dt>
+<dd><dl>
+<dt><span class="section"> Lexer Concepts</span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"><a href="lex/reference/primitives.html"> Token definition
+        Primitives</a></span></dt>
+<dt><span class="section"> Lexer Class</span></dt>
+<dt><span class="section"> Token Class</span></dt>
+<dt><span class="section"> TokenDef Class</span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="karma/performance_measurements/numeric_performance/format_performance.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Abstracts</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="prev" href="tutorials/lexer_quickstart3.html" title="Quickstart 3 - Counting Words Using a Parser">
+<link rel="next" href="abstracts/lexer_primitives.html" title="Lexer Primitives">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/lexer_quickstart3.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="abstracts/lexer_primitives.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Abstracts">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.lex.abstracts"></a><a class="link" href="abstracts.html" title="Abstracts"> Abstracts</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Lexer Primitives</span></dt>
+<dt><span class="section"><a href="abstracts/lexer_tokenizing.html"> Tokenizing
+        Input Data</a></span></dt>
+<dt><span class="section"><a href="abstracts/lexer_semantic_actions.html"> Lexer
+        Semantic Actions</a></span></dt>
+<dt><span class="section"><a href="abstracts/lexer_static_model.html"> The <span class="emphasis"><em>Static</em></span>
+        Lexer Model</a></span></dt>
+<dt><span class="section"><a href="abstracts/lexer_parsing.html"> Parsing using
+        a Lexer</a></span></dt>
+<dt><span class="section"> Lexer Attributes</span></dt>
+<dt><span class="section"> Lexer States</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/lexer_quickstart3.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="abstracts/lexer_primitives.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Attributes</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_parsing.html" title="Parsing using a Lexer">
+<link rel="next" href="lexer_states.html" title="Lexer States">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_parsing.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_states.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Attributes"><div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_attributes"></a><a class="link" href="lexer_attributes.html" title="Lexer Attributes"> Lexer Attributes</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_parsing.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_states.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parsing using a Lexer</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_static_model.html" title="The Static Lexer Model">
+<link rel="next" href="lexer_attributes.html" title="Lexer Attributes">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_static_model.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Parsing using a Lexer"><div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_parsing"></a><a class="link" href="lexer_parsing.html" title="Parsing using a Lexer"> Parsing using
+        a Lexer</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_static_model.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Primitives</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="../abstracts.html" title="Abstracts">
+<link rel="next" href="lexer_primitives/lexer_primitives.html" title="Lexer Primitives">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../abstracts.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_primitives/lexer_primitives.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Primitives">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_primitives"></a><a class="link" href="lexer_primitives.html" title="Lexer Primitives">Lexer Primitives</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="lexer_primitives/lexer_primitives.html">
+          Lexer Primitives</a></span></dt>
+<dt><span class="section"><a href="lexer_primitives/lexer_token_values.html">
+          About Tokens and Token Values</a></span></dt>
+<dt><span class="section"><a href="lexer_primitives/lexer_token_definition.html">
+          Ways to define Tokens</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../abstracts.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_primitives/lexer_primitives.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Primitives</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_primitives.html" title="Lexer Primitives">
+<link rel="prev" href="../lexer_primitives.html" title="Lexer Primitives">
+<link rel="next" href="lexer_token_values.html" title="About Tokens and Token Values">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_token_values.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Primitives"><div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_primitives"></a><a class="link" href="lexer_primitives.html" title="Lexer Primitives">
+          Lexer Primitives</a>
+</h5></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_token_values.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,43 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Ways to define Tokens</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_primitives.html" title="Lexer Primitives">
+<link rel="prev" href="lexer_token_values.html" title="About Tokens and Token Values">
+<link rel="next" href="../lexer_tokenizing.html" title="Tokenizing Input Data">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_token_values.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lexer_tokenizing.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Ways to define Tokens"><div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_definition"></a><a class="link" href="lexer_token_definition.html" title="Ways to define Tokens">
+          Ways to define Tokens</a>
+</h5></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_token_values.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lexer_tokenizing.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,367 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>About Tokens and Token Values</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_primitives.html" title="Lexer Primitives">
+<link rel="prev" href="lexer_primitives.html" title="Lexer Primitives">
+<link rel="next" href="lexer_token_definition.html" title="Ways to define Tokens">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_token_definition.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="About Tokens and Token Values">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values"></a><a class="link" href="lexer_token_values.html" title="About Tokens and Token Values">
+          About Tokens and Token Values</a>
+</h5></div></div></div>
+<p>
+            As already discussed, lexical scanning is the process of analyzing the
+            stream of input characters and separating it into strings called tokens,
+            most of the time separated by whitespace. The different token types recognized
+            by a lexical analyzer often get assigned unique integer token identifiers
+            (token ids). These token ids arenormally used by the parser to identifiy
+            the current token without having to look at the matched string again.
+            The <span class="emphasis"><em>Spirit.Lex</em></span> library is not different with respect
+            to this, as it uses the token ids as the main means of identification
+            of the different token types defined for a particular lexical analyzer.
+            However, it is different from commonly used lexical analyzers in the
+            sense that it returns (references to) instances of a (user defined) token
+            class to the user. The only real limitation posed on this token class
+            is consequently, that it has to carry at least the token id of the token
+            it represents. For more information about the interface a user defined
+            token type has to expose please look at the <a class="link" href="../../reference/token.html" title="Token Class">Token
+            Class</a> reference. The library provides a default token type based
+            on the Lexertl
+            library which should be sufficient in most use cases: the <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a>
+            type. This section focusses on the description of general features a
+            token class may implement and how this integrates with the other parts
+            of the <span class="emphasis"><em>Spirit.Lex</em></span> library.
+          </p>
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token"></a><h6>
+<a name="id862574"></a>
+            <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token">The
+            Anatomy of a Token</a>
+          </h6>
+<p>
+            It is very important to understand the difference between a token definition
+            (represented by the <a class="link" href="../../reference/tokendef.html" title="TokenDef Class"><code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code></a>
+            template) and a token itself (for instance represented by the <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a>
+            template).
+          </p>
+<p>
+            The token definition is used to describe the main features of a particular
+            token type, especially:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              to simplify the definition of a token type using a regular expression
+              pattern applied while matching this token type,
+            </li>
+<li class="listitem">
+              to associate a token type with a particular lexer state,
+            </li>
+<li class="listitem">
+              to optionally assign a token id to a token type,
+            </li>
+<li class="listitem">
+              to optionally associate some code to execute whenever an instance of
+              this token type has been matched,
+            </li>
+<li class="listitem">
+              and to optionally specify the attribute type of the token value.
+            </li>
+</ul></div>
+<p>
+            The token itself is a data structure returned by the lexer iterators.
+            Dereferencing a lexer iterator returns a reference to the last matched
+            token instance. It encapsulates the part of the underlying input sequence
+            matched by the regular expression used during the definiton of this token
+            type. Incrementing the lexer iterator invokes the lexical analyzer to
+            match the next token by advancing the underlying input stream. The token
+            data structure contains at least the token id of the matched token type,
+            allowing to identify the matched character sequence. Optionally, the
+            token instance may contain a token value and/or the lexer state this
+            token instance was matched in. The following <a class="link" href="lexer_token_values.html#spirit.lex.tokenstructure" title="Figure 8. The structure of a token">figure</a>
+            shows the schematic structure of a token.
+          </p>
+<p>
+            </p>
+<div class="figure">
+<a name="spirit.lex.tokenstructure"></a><p class="title"><b>Figure 8. The structure of a token</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/tokenstructure.png" alt="The structure of a token"></span></div>
+</div>
+<p><br class="figure-break">
+          </p>
+<p>
+            The token value and the lexer state the token has been recogniyed in
+            may be omitted for optimization reasons, avoiding the token to carry
+            more data than actually required. This configuration can be achieved
+            by supplying appropriate template parameters for the <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a>
+            template while defining the token type.
+          </p>
+<p>
+            The lexer iterator returns the same token type for each of the different
+            matched token definitions. To accomodate for the possibly different token
+            <span class="emphasis"><em>value</em></span> types exposed by the various token types (token
+            definitions), the general type of the token value is a Boost.Variant.
+            As a minimum (for the default configuration) this token value variant
+            will be configured to always hold a boost::iterator_range containing the
+            pair of iterators pointing to the matched input sequence for this token
+            instance.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              If the lexical analyzer is used in conjunction with a <span class="emphasis"><em>Spirit.Qi</em></span>
+              parser, the stored boost::iterator_range token value
+              will be converted to the requested token type (parser attribute) exactly
+              once. This happens at the time of the first access to the token value
+              requiring the corresponding type conversion. The converted token value
+              will be stored in the Boost.Variant
+              replacing the initially stored iterator range. This avoids to convert
+              the input sequence to the token value more than once, thus optimizing
+              the integration of the lexer with <span class="emphasis"><em>Spirit.Qi</em></span>, even
+              during parser backtracking.
+            </p></td></tr>
+</table></div>
+<p>
+            Here is the template prototype of the <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a>
+            template:
+          </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">Iterator</span> <span class="special">=</span> <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> 
+    <span class="keyword">typename</span> <span class="identifier">AttributeTypes</span> <span class="special">=</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector0</span><span class="special"><>,</span> 
+    <span class="keyword">typename</span> <span class="identifier">HasState</span> <span class="special">=</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+<span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">lexertl_token</span><span class="special">;</span>
+</pre>
+<div class="variablelist" title="where:">
+<p class="title"><b>where:</b></p>
+<dl>
+<dt><span class="term">Iterator</span></dt>
+<dd><p>
+                This is the type of the iterator used to access the underlying input
+                stream. It defaults to a plain <code class="computeroutput"><span class="keyword">char</span>
+                <span class="keyword">const</span><span class="special">*</span></code>.
+              </p></dd>
+<dt><span class="term">AttributeTypes</span></dt>
+<dd><p>
+                This is either a mpl sequence containing all attribute types used
+                for the token definitions or the type <code class="computeroutput"><span class="identifier">omit</span></code>.
+                If the mpl sequence is empty (which is the default), all token instances
+                will store a boost::iterator_range<code class="computeroutput"><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span></code> pointing to the start and the
+                end of the matched section in the input stream. If the type is <code class="computeroutput"><span class="identifier">omit</span></code>, the generated tokens will
+                contain no token value (attribute) at all.
+              </p></dd>
+<dt><span class="term">HasState</span></dt>
+<dd><p>
+                This is either <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                or <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>, allowing to control whether
+                the generated token instances will contain the lexer state they were
+                generated in. The default is mpl::true_, so all token instances will
+                contain the lexer state.
+              </p></dd>
+</dl>
+</div>
+<p>
+            Normally, during its construction, a token instance always holds the
+            boost::iterator_range as its token
+            value (except, if it has been defined using the <code class="computeroutput"><span class="identifier">omit</span></code>
+            token value type). This iterator range then is converted in place to
+            the requested token value type (attribute) when it is requested for the
+            first time.
+          </p>
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition"></a><h6>
+<a name="id863067"></a>
+            <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition">The
+            Physiognomy of a Token Definition</a>
+          </h6>
+<p>
+            The token definitions (represented by the <a class="link" href="../../reference/tokendef.html" title="TokenDef Class"><code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code></a>
+            template) are normally used as part of the definition of the lexical
+            analyzer. At the same time a token definition instance may be used as
+            a parser component in <span class="emphasis"><em>Spirit.Qi</em></span>.
+          </p>
+<p>
+            The template prototype of this class is shown here:
+          </p>
+<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">Attribute</span> <span class="special">=</span> <span class="identifier">unused_type</span><span class="special">,</span> 
+    <span class="keyword">typename</span> <span class="identifier">Char</span> <span class="special">=</span> <span class="keyword">char</span>
+<span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">token_def</span><span class="special">;</span>
+</pre>
+<div class="variablelist" title="where:">
+<p class="title"><b>where:</b></p>
+<dl>
+<dt><span class="term">Attribute</span></dt>
+<dd><p>
+                This is the type of the token value (attribute) supported by token
+                instances representing this token type. This attribute type is exposed
+                to the <span class="emphasis"><em>Spirit.Qi</em></span> library, whenever this token
+                definition is used as a parser component. The default attribute type
+                is <code class="computeroutput"><span class="identifier">unused_type</span></code>, which
+                means the token instance holds a boost::iterator_range pointing
+                to the start and the end of the matched section in the input stream.
+                If the attribute is <code class="computeroutput"><span class="identifier">omit</span></code>
+                the token instance will expose no token type at all. Any other type
+                will be used directly as the token value type.
+              </p></dd>
+<dt><span class="term">Char</span></dt>
+<dd><p>
+                This is the value type of the iterator for the underlying input sequence.
+                It defaults to <code class="computeroutput"><span class="keyword">char</span></code>.
+              </p></dd>
+</dl>
+</div>
+<p>
+            The semantics of the template parameters for the token type and the token
+            definition type are very similar and interdependent. As a rule of thumb
+            you can think of the token definition type as the means of specifying
+            everything related to a single specific token type (such as <code class="computeroutput"><span class="identifier">identifier</span></code> or <code class="computeroutput"><span class="identifier">integer</span></code>).
+            On the other hand the token type is used to define the general proerties
+            of all token instances generated by the <span class="emphasis"><em>Spirit.Lex</em></span>
+            library.
+          </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              If you don't list any token value types in the token type definition
+              declaration (resulting in the usage of the default boost::iterator_range token type)
+              everything will compile and work just fine, just a bit less efficient.
+              This is because the token value will be converted from the matched
+              input sequence every time it is requested.
+            </p>
+<p>
+              But as soon as you specify at least one token value type while defining
+              the token type you'll have to list all value types used for <a class="link" href="../../reference/tokendef.html" title="TokenDef Class"><code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code></a>
+              declarations in the token definition class, otherwise compilation errors
+              will occur.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_"></a><h6>
+<a name="id863318"></a>
+            <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_">Examples
+            of using <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a></a>
+          </h6>
+<p>
+            Let's start with some examples. We refer to one of the <span class="emphasis"><em>Spirit.Lex</em></span>
+            examples (for the full source code of this example please see example4.cpp).
+          </p>
+<p>
+            The first code snippet shows an excerpt of the token definition class,
+            the definition of a couple of token types. Some of the token types do
+            not expose a special token value (<code class="computeroutput"><span class="identifier">if_</span></code>,
+            <code class="computeroutput"><span class="identifier">else_</span></code>, and <code class="computeroutput"><span class="identifier">while_</span></code>). Their token value will always
+            hold the iterator range of the matched input sequence only. The token
+            definitions for the <code class="computeroutput"><span class="identifier">identifier</span></code>
+            and the integer <code class="computeroutput"><span class="identifier">constant</span></code>
+            are specialized to expose an explicit token type each: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> and <code class="computeroutput"><span class="keyword">unsigned</span>
+            <span class="keyword">int</span></code>.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="comment">// these tokens expose the iterator_range of the matched input sequence
+</span><span class="identifier">token_def</span><span class="special"><></span> <span class="identifier">if_</span><span class="special">,</span> <span class="identifier">else_</span><span class="special">,</span> <span class="identifier">while_</span><span class="special">;</span>
+
+<span class="comment">// The following two tokens have an associated attribute type, 'identifier'
+</span><span class="comment">// carries a string (the identifier name) and 'constant' carries the 
+</span><span class="comment">// matched integer value.
+</span><span class="comment">//
+</span><span class="comment">// Note: any token attribute type explicitly specified in a token_def<>
+</span><span class="comment">//       declaration needs to be listed during token type definition as 
+</span><span class="comment">//       well (see the typedef for the token_type below).
+</span><span class="comment">//
+</span><span class="comment">// The conversion of the matched input to an instance of this type occurs
+</span><span class="comment">// once (on first access), which makes token attributes as efficient as 
+</span><span class="comment">// possible. Moreover, token instances are constructed once by the lexer
+</span><span class="comment">// library. From this point on tokens are passed by reference only, 
+</span><span class="comment">// avoiding them being copied around.
+</span><span class="identifier">token_def</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">identifier</span><span class="special">;</span>
+<span class="identifier">token_def</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">constant</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            As the parsers generated by <span class="emphasis"><em>Spirit.Qi</em></span> are fully
+            attributed, any <span class="emphasis"><em>Spirit.Qi</em></span> parser component needs
+            to expose a certain type as its parser attribute. Naturally, the <a class="link" href="../../reference/tokendef.html" title="TokenDef Class"><code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code></a> exposes the token value
+            type as its parser attribute, enabling a smooth integration with <span class="emphasis"><em>Spirit.Qi</em></span>.
+          </p>
+<p>
+            The next code snippet demonstrates how the required token value types
+            are specified while defining the token type to use. All of the token
+            value types used for at least one of the token definitions have to be
+            re-iterated for the token definition as well.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="comment">// This is the lexer token type to use. The second template parameter lists 
+</span><span class="comment">// all attribute types used for token_def's during token definition (see 
+</span><span class="comment">// calculator_tokens<> above). Here we use the predefined lexertl token 
+</span><span class="comment">// type, but any compatible token type may be used instead.
+</span><span class="comment">//
+</span><span class="comment">// If you don't list any token attribute types in the following declaration 
+</span><span class="comment">// (or just use the default token type: lexertl_token<base_iterator_type>)  
+</span><span class="comment">// it will compile and work just fine, just a bit less efficient. This is  
+</span><span class="comment">// because the token attribute will be generated from the matched input  
+</span><span class="comment">// sequence every time it is requested. But as soon as you specify at 
+</span><span class="comment">// least one token attribute type you'll have to list all attribute types 
+</span><span class="comment">// used for token_def<> declarations in the token definition class above, 
+</span><span class="comment">// otherwise compilation errors will occur.
+</span><span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">token</span><span class="special"><</span>
+    <span class="identifier">base_iterator_type</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">unsigned</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> 
+<span class="special">></span> <span class="identifier">token_type</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            To avoid the token to have a token value at all, the special tag <code class="computeroutput"><span class="identifier">omit</span></code> can be used: <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><</span><span class="identifier">omit</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><</span><span class="identifier">base_iterator_type</span><span class="special">,</span> <span class="identifier">omit</span><span class="special">></span></code>.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_token_definition.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,500 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_tokenizing.html" title="Tokenizing Input Data">
+<link rel="next" href="lexer_static_model.html" title="The Static Lexer Model">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_tokenizing.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_static_model.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_semantic_actions"></a><a class="link" href="lexer_semantic_actions.html" title="Lexer Semantic Actions"> Lexer
+        Semantic Actions</a>
+</h4></div></div></div>
+<p>
+          The main task of a lexer normally is to recognize tokens in the input.
+          Traditionally this has been complemented with the possibility to execute
+          arbitrary code whenever a certain token has been detected. <span class="emphasis"><em>Spirit.Lex</em></span>
+          has been designed to support this mode of operation as well. We borrow
+          from the concept of semantic actions for parsers (<span class="emphasis"><em>Spirit.Qi</em></span>)
+          and generators (<span class="emphasis"><em>Spirit.Karma</em></span>). Lexer semantic actions
+          may be attached to any token definition. These are C++ functions or function
+          objects that are called whenever a token definition successfully recognizes
+          a portion of the input. Say you have a token definition <code class="computeroutput"><span class="identifier">D</span></code>,
+          and a C++ function <code class="computeroutput"><span class="identifier">f</span></code>, you
+          can make the lexer call <code class="computeroutput"><span class="identifier">f</span></code>
+          whenever it matches an input by attaching <code class="computeroutput"><span class="identifier">f</span></code>:
+        </p>
+<pre class="programlisting"><span class="identifier">D</span><span class="special">[</span><span class="identifier">f</span><span class="special">]</span>
+</pre>
+<p>
+          The expression above links <code class="computeroutput"><span class="identifier">f</span></code>
+          to the token definition, <code class="computeroutput"><span class="identifier">D</span></code>.
+          The required prototype of <code class="computeroutput"><span class="identifier">f</span></code>
+          is:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span> <span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">pass_flag</span><span class="special">&</span> <span class="identifier">matched</span><span class="special">,</span> <span class="identifier">Idtype</span><span class="special">&</span> <span class="identifier">id</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">&</span> <span class="identifier">ctx</span><span class="special">);</span>
+</pre>
+<div class="variablelist" title="where:">
+<p class="title"><b>where:</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">start</span></code></span></dt>
+<dd><p>
+              This is a the iterator pointing to the begin of the matched range in
+              the underlying input sequence. The type of the iterator is the same
+              as specified while defining the type of the <code class="computeroutput"><span class="identifier">lexertl_lexer</span><span class="special"><...></span></code> (its first template parameter).
+              The semantic action is allowed to change the value of this iterator
+              influencing, the matched input sequence.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">end</span></code></span></dt>
+<dd><p>
+              This is a the iterator pointing to the end of the matched range in
+              the underlying input sequence. The type of the iterator is the same
+              as specified while defining the type of the <code class="computeroutput"><span class="identifier">lexertl_lexer</span><span class="special"><...></span></code> (its first template parameter).
+              The semantic action is allowed to change the value of this iterator
+              influencing, the matched input sequence.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">pass_flag</span><span class="special">&</span> <span class="identifier">matched</span></code></span></dt>
+<dd><p>
+              This value is pre/initialized to <code class="computeroutput"><span class="identifier">pass_normal</span></code>.
+              If the semantic action sets it to <code class="computeroutput"><span class="identifier">pass_fail</span></code>
+              the behaves as if the token has not been matched in the first place.
+              If the semantic action sets this to <code class="computeroutput"><span class="identifier">pass_ignore</span></code>
+              the lexer ignores the current token and tries to match a next token
+              from the input.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Idtype</span><span class="special">&</span> <span class="identifier">id</span></code></span></dt>
+<dd><p>
+              This is the token id of the type Idtype (most of the time this will
+              be a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>) for the matched token. The
+              semantic action is allowed to change the value of this token id, influencing
+              the if of the created token.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span><span class="special">&</span> <span class="identifier">ctx</span></code></span></dt>
+<dd><p>
+              This is a reference to a lexer specific, unspecified type, providing
+              the context for the current lexer state. It can be used to access different
+              internal data items and is needed for lexer state control from inside
+              a semantic action.
+            </p></dd>
+</dl>
+</div>
+<p>
+          When using a C++ function as the semantic action the following prototypes
+          are allowed as well:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span> <span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">pass_flag</span><span class="special">&</span> <span class="identifier">matched</span><span class="special">,</span> <span class="identifier">Idtype</span><span class="special">&</span> <span class="identifier">id</span><span class="special">);</span>
+<span class="keyword">void</span> <span class="identifier">f</span> <span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">pass_flag</span><span class="special">&</span> <span class="identifier">matched</span><span class="special">);</span>
+<span class="keyword">void</span> <span class="identifier">f</span> <span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">start</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">end</span><span class="special">);</span>
+<span class="keyword">void</span> <span class="identifier">f</span> <span class="special">();</span>
+</pre>
+<a name="spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action"></a><h6>
+<a name="id869192"></a>
+          <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action">The
+          context of a lexer semantic action</a>
+        </h6>
+<p>
+          The last parameter passed to any lexer semantic action is a reference to
+          an unspecified type (see the <code class="computeroutput"><span class="identifier">Context</span></code>
+          type in the table above). This type is unspecified because it depends on
+          the token type returned by the lexer. It is implemented in the internals
+          of the iterator type exposed by the lexer. Nevertheless, any context type
+          is expected to expose a couple of functions allowing to influence the behavior
+          of the lexer. The following table gives an overview and a short description
+          of the available functionality.
+        </p>
+<div class="table">
+<a name="id869212"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
+        semantic action</b></p>
+<div class="table-contents"><table class="table" summary="Functions exposed by any context passed to a lexer
+        semantic action">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                Name
+              </p>
+              </th>
+<th>
+              <p>
+                Description
+              </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">get_eoi</span><span class="special">()</span> <span class="keyword">const</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">get_eoi</span><span class="special">()</span></code> may be used by to access the end
+                iterator of the input stream the lexer has been initialized with
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">more</span><span class="special">()</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">more</span><span class="special">()</span></code> tells the lexer that the next time
+                it matches a rule, the corresponding token should be appended onto
+                the current token value rather than replacing it.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">less</span><span class="special">(</span><span class="identifier">Iterator</span>
+                <span class="keyword">const</span><span class="special">&</span>
+                <span class="identifier">it</span><span class="special">,</span>
+                <span class="keyword">int</span> <span class="identifier">n</span><span class="special">)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">less</span><span class="special">()</span></code> returns an iterator positioned
+                to the nth input character beyond the current token start iterator
+                (i.e. by passing the return value to the parameter <code class="computeroutput"><span class="identifier">end</span></code> it is possible to return all
+                but the first n characters of the current token back to the input
+                stream.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">lookahead</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
+                <span class="identifier">id</span><span class="special">)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">lookahead</span><span class="special">()</span></code> can be for instance used to implement
+                lookahead for lexer engines not supporting constructs like flex'
+                <code class="computeroutput"><span class="identifier">a</span><span class="special">/</span><span class="identifier">b</span></code> (match <code class="computeroutput"><span class="identifier">a</span></code>,
+                but only when followed by <code class="computeroutput"><span class="identifier">b</span></code>).
+                It invokes the lexer on the input following the current token without
+                actually moving forward in the input stream. The function returns
+                whether the lexer was able to match a token with the given token-id
+                <code class="computeroutput"><span class="identifier">id</span></code>.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">get_state</span><span class="special">()</span> <span class="keyword">const</span></code>
+                and <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">set_state</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span>
+                <span class="identifier">state</span><span class="special">)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The functions <code class="computeroutput"><span class="identifier">get_state</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">set_state</span><span class="special">()</span></code> may be used to introspect and change
+                the current lexer state.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">token_value_type</span> <span class="identifier">get_value</span><span class="special">()</span>
+                <span class="keyword">const</span></code> and <code class="computeroutput"><span class="keyword">void</span>
+                <span class="identifier">set_value</span><span class="special">(</span><span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The functions <code class="computeroutput"><span class="identifier">get_value</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">set_value</span><span class="special">()</span></code> may be used to introspect and change
+                the current token value.
+              </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix"></a><h6>
+<a name="id869730"></a>
+          <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix">Lexer
+          Semantic Actions Using Phoenix</a>
+        </h6>
+<p>
+          Even if it is possible to write your own function object implementations
+          (i.e. using Boost.Lambda or Boost.Bind), the preferred way of defining
+          lexer semantic actions is to use Boost.Phoenix.
+          In this case you can access the parameters described above by using the
+          predefined Spirit placeholders:
+        </p>
+<div class="table">
+<a name="id869753"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
+        actions</b></p>
+<div class="table-contents"><table class="table" summary="Predefined Phoenix placeholders for lexer semantic
+        actions">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                Placeholder
+              </p>
+              </th>
+<th>
+              <p>
+                Description
+              </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_start</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                Refers to the iterator pointing to the begin of the matched input
+                sequence. Any modifications to this iterator value will be reflected
+                in the generated token.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_end</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                Refers to the iterator pointing past the end of the matched input
+                sequence. Any modifications to this iterator value will be reflected
+                in the generated token.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_pass</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                References the value signaling the outcome of the semantic action.
+                This is pre-initialized to <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">pass_flags</span><span class="special">::</span><span class="identifier">pass_normal</span></code>.
+                If this is set to <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">pass_flags</span><span class="special">::</span><span class="identifier">pass_fail</span></code>,
+                the lexer will behave as if no token has been matched, if is set
+                to <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">pass_flags</span><span class="special">::</span><span class="identifier">pass_ignore</span></code>, the lexer will ignore
+                the current match and proceed trying to match tokens from the input.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_tokenid</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                Refers to the token id of the token to be generated. Any modifications
+                to this value will be reflected in the generated token.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_val</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                Refers to the value the next token will be initialized from. Any
+                modifications to this value will be reflected in the generated token.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_state</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                Refers to the lexer state the input has been match in. Any modifications
+                to this value will be reflected in the lexer itself (the next match
+                will start in the new state). The currently generated token is not
+                affected by changes to this variable.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">_eoi</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                References the end iterator of the overall lexer input. This value
+                cannot be changed.
+              </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+          The context object passed as the last parameter to any lexer semantic action
+          is not directly accessible while using Boost.Phoenix
+          expressions. We rather provide predefine Phoenix functions allowing to
+          invoke the different support functions as mentioned above. The following
+          table lists the available support functions and describes their functionality:
+        </p>
+<div class="table">
+<a name="id870032"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
+        inside lexer semantic actions</b></p>
+<div class="table-contents"><table class="table" summary="Support functions usable from Phoenix expressions
+        inside lexer semantic actions">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                Plain function
+              </p>
+              </th>
+<th>
+              <p>
+                Phoenix function
+              </p>
+              </th>
+<th>
+              <p>
+                Description
+              </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">ctx</span><span class="special">.</span><span class="identifier">more</span><span class="special">()</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">more</span><span class="special">()</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">more</span><span class="special">()</span></code> tells the lexer that the next time
+                it matches a rule, the corresponding token should be appended onto
+                the current token value rather than replacing it.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">ctx</span><span class="special">.</span><span class="identifier">less</span><span class="special">()</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">less</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">less</span><span class="special">()</span></code> takes a single integer parameter
+                <code class="computeroutput"><span class="identifier">n</span></code> and returns an
+                iterator positioned to the nth input character beyond the current
+                token start iterator (i.e. by assigning the return value to the placeholder
+                <code class="computeroutput"><span class="identifier">_end</span></code> it is possible
+                to return all but the first <code class="computeroutput"><span class="identifier">n</span></code>
+                characters of the current token back to the input stream.
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">ctx</span><span class="special">.</span><span class="identifier">lookahead</span><span class="special">()</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">lookahead</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span></code>
+                or <code class="computeroutput"><span class="identifier">lookahead</span><span class="special">(</span><span class="identifier">token_def</span><span class="special">)</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                The function <code class="computeroutput"><span class="identifier">lookahead</span><span class="special">()</span></code> takes a single parameter specifying
+                the token to match in the input. The function can be used for instance
+                to implement lookahead for lexer engines not supporting constructs
+                like flex' <code class="computeroutput"><span class="identifier">a</span><span class="special">/</span><span class="identifier">b</span></code> (match <code class="computeroutput"><span class="identifier">a</span></code>,
+                but only when followed by <code class="computeroutput"><span class="identifier">b</span></code>).
+                It invokes the lexer on the input following the current token without
+                actually moving forward in the input stream. The function returns
+                whether the lexer was able to match the specified token.
+              </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break">
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_tokenizing.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_static_model.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer States</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_attributes.html" title="Lexer Attributes">
+<link rel="next" href="../quick_reference.html" title="Quick Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer States">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_states"></a><a class="link" href="lexer_states.html" title="Lexer States"> Lexer States</a>
+</h4></div></div></div>
+<a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions"></a><h6>
+<a name="id872882"></a>
+          <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions">Controlling
+          the Lexer State from Lexer Semantic Actions</a>
+        </h6>
+<a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions"></a><h6>
+<a name="id872895"></a>
+          <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions">Controlling
+          the Lexer State from Parser Semantic Actions</a>
+        </h6>
+<a name="spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser"></a><h6>
+<a name="id872909"></a>
+          <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser">Using
+          a Lexer State for the Skip Parser</a>
+        </h6>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,367 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The Static Lexer Model</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_semantic_actions.html" title="Lexer Semantic Actions">
+<link rel="next" href="lexer_parsing.html" title="Parsing using a Lexer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_parsing.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="The Static Lexer Model">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_static_model"></a><a class="link" href="lexer_static_model.html" title="The Static Lexer Model"> The <span class="emphasis"><em>Static</em></span>
+        Lexer Model</a>
+</h4></div></div></div>
+<p>
+          The documentation of <span class="emphasis"><em>Spirit.Lex</em></span> so far mostly was
+          about describing the features of the <span class="emphasis"><em>dynamic</em></span> model,
+          where the tables needed for lexical analysis are generated from the regular
+          expressions at runtime. The big advantage of the dynamic model is its flexibility,
+          and its integration with the Spirit
+          library and the C++ host language. Its big disadvantage is the need to
+          spend additional runtime to generate the tables, which especially might
+          be a limitation for larger lexical analyers. The <span class="emphasis"><em>static</em></span>
+          model strives to build upon the smooth integration with Spirit
+          and C++, and reuses large parts of the <span class="emphasis"><em>Spirit.Lex</em></span>
+          library as described so far, while overcoming the additional runtime requirements
+          by using pre-generated tables and tokenizer routines. To make the code
+          generation as simple as possible, it is possible reuse the token definition
+          types developed using the <span class="emphasis"><em>dynamic</em></span> model without any
+          changes. As will be shown in this section, building a code generator based
+          on an existing token definition type is a matter of writing 3 lines of
+          code.
+        </p>
+<p>
+          Assuming you already built a dynamic lexer for your problem, there are
+          two more steps needed to create a static lexical analyzer using <span class="emphasis"><em>Spirit.Lex</em></span>:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            generating the C++ code for the static analyzer (including the tokenization
+            function and corresponding tables), and
+          </li>
+<li class="listitem">
+            modifying the dynamic lexical anlyzer to use the generated code.
+          </li>
+</ol></div>
+<p>
+          Both steps are described in more detail in the two sections below (for
+          the full source code used in this example see the code here: <a href="../../../../../example/lex/static_lexer/word_count_tokens.hpp" target="_top">the
+          common token definition</a>, <a href="../../../../../example/lex/static_lexer/word_count_generate.cpp" target="_top">the
+          code generator</a>, <a href="../../../../../example/lex/static_lexer/word_count_static.hpp" target="_top">the
+          generated code</a>, and <a href="../../../../../example/lex/static_lexer/word_count_static.cpp" target="_top">the
+          static lexical analyzer</a>).
+        </p>
+<p>
+          But first we provide the code snippets needed to understand the further
+          descriptions. Both, the definition of the used token identifier and the
+          of the token definition class in this example are put into a separate header
+          file to make these available to the code generator and the static lexical
+          analyzer.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">enum</span> <span class="identifier">tokenids</span> 
+<span class="special">{</span>
+    <span class="identifier">IDANY</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">min_token_id</span> <span class="special">+</span> <span class="number">1</span><span class="special">,</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The important point here is, that the token definition class is not different
+          from a similar class to be used for a dynamic lexical analyzer. The library
+          has been designed in a way, that all components (dynamic lexical analyzer,
+          code generator, and static lexical analyzer) can reuse the very same token
+          definition syntax.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="comment">// This token definition class can be used without any change for all three
+</span><span class="comment">// possible use cases: a dynamic lexical analyzer, a code generator, and a
+</span><span class="comment">// static lexical analyzer.
+</span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseLexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_tokens</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><</span><span class="identifier">BaseLexer</span><span class="special">></span> 
+<span class="special">{</span>
+    <span class="identifier">word_count_tokens</span><span class="special">()</span>
+      <span class="special">:</span> <span class="identifier">word_count_tokens</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span>
+          <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">match_flags</span><span class="special">::</span><span class="identifier">match_not_dot_newline</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="comment">// define tokens and associate them with the lexer
+</span>        <span class="identifier">word</span> <span class="special">=</span> <span class="string">"[^ \t\n]+"</span><span class="special">;</span>
+        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span> <span class="special">=</span> <span class="identifier">word</span> <span class="special">|</span> <span class="char">'\n'</span> <span class="special">|</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">token_def</span><span class="special"><>(</span><span class="string">"."</span><span class="special">,</span> <span class="identifier">IDANY</span><span class="special">);</span>
+    <span class="special">}</span>
+
+    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">token_def</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">word</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The only thing changing between the three different use cases is the template
+          parameter used to instantiate a concrete token definition. Fot the dynamic
+          model and the code generator you probably will use the <a class="link" href="../reference/lexer.html#spirit.lex.reference.lexer.the_lexertl__lexer_class_implementing_the_dynamic_model"><code class="computeroutput"><span class="identifier">lexertl_lexer</span><span class="special"><></span></code></a>
+          template, where for the static model you will use the <a class="link" href="../reference/lexer.html#spirit.lex.reference.lexer.the_lexertl__static_lexer_class_implementing_the_static_model"><code class="computeroutput"><span class="identifier">lexertl_static_lexer</span><span class="special"><></span></code></a>
+          type as the template parameter.
+        </p>
+<p>
+          This example not only shows how to build a static lexer, but it additionally
+          demonstrates how such a lexer can be used for parsing in conjunction with
+          a <span class="emphasis"><em>Spirit.Qi</em></span> grammar. For completeness we provide the
+          simple grammar used in this example. As you can see, this grammar does
+          not have any dependencies on the static lexical analyzer, and for this
+          reason it is not different from a grammar used either without a lexer or
+          using a dynamic lexical analyzer as described before.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="comment">//  This is an ordinary grammar definition following the rules defined by 
+</span><span class="comment">//  Spirit.Qi. There is nothing specific about it, except it gets the token
+</span><span class="comment">//  definition class instance passed to the constructor to allow accessing the
+</span><span class="comment">//  embedded token_def<> instances.
+</span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_grammar</span> <span class="special">:</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TokenDef</span><span class="special">></span>
+    <span class="identifier">word_count_grammar</span><span class="special">(</span><span class="identifier">TokenDef</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">tok</span><span class="special">)</span>
+      <span class="special">:</span> <span class="identifier">word_count_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">c</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">w</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">l</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">size</span><span class="special">;</span>
+
+        <span class="comment">//  associate the defined tokens with the lexer, at the same time 
+</span>        <span class="comment">//  defining the actions to be executed 
+</span>        <span class="identifier">start</span> <span class="special">=</span>  <span class="special">*(</span>   <span class="identifier">tok</span><span class="special">.</span><span class="identifier">word</span>      <span class="special">[</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">size</span><span class="special">(</span><span class="identifier">_1</span><span class="special">)</span> <span class="special">]</span>
+                  <span class="special">|</span>   <span class="identifier">lit</span><span class="special">(</span><span class="char">'\n'</span><span class="special">)</span>     <span class="special">[</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">),</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">]</span> 
+                  <span class="special">|</span>   <span class="identifier">token</span><span class="special">(</span><span class="identifier">IDANY</span><span class="special">)</span>  <span class="special">[</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">]</span>
+                  <span class="special">)</span>
+              <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">l</span><span class="special">;</span>      <span class="comment">// counter for characters, words, and lines
+</span>    <span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer"></a><h6>
+<a name="id871519"></a>
+          <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer">Generating
+          the Static Analyzer</a>
+        </h6>
+<p>
+          The first additional step to perform in order to create a static lexical
+          analyzer is to create a small standalone program for creating the lexer
+          tables and the corresponding tokenization function. For this purpose the
+          <span class="emphasis"><em>Spirit.Lex</em></span> library exposes a special API - the function
+          <a class="link" href="../../../"><code class="computeroutput"><span class="identifier">generate_static</span><span class="special">()</span></code></a>.
+          It implements the whole code generator, no further code is needed. All
+          what it takes to invoke this function is to supply a token definition instance,
+          an output stream to use to generate the code to, and an optional string
+          to be used as a suffix for the name of the generated function. All in all
+          just a couple lines of code.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+    <span class="comment">// create the lexer object instance needed to invoke the generator
+</span>    <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><></span> <span class="special">></span> <span class="identifier">word_count</span><span class="special">;</span> <span class="comment">// the token definition
+</span>
+    <span class="comment">// open the output file, where the generated tokenizer function will be 
+</span>    <span class="comment">// written to
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">ofstream</span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">argc</span> <span class="special"><</span> <span class="number">2</span> <span class="special">?</span> <span class="string">"word_count_static.hpp"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]);</span>
+
+    <span class="comment">// invoke the generator, passing the token definition, the output stream 
+</span>    <span class="comment">// and the name suffix of the tables and functions to be generated
+</span>    <span class="comment">//
+</span>    <span class="comment">// The suffix "wc" used below results in a type lexertl::static_::lexer_wc
+</span>    <span class="comment">// to be generated, which needs to be passed as a template parameter to the 
+</span>    <span class="comment">// lexertl::static_lexer template (see word_count_static.cpp).
+</span>    <span class="keyword">return</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">generate_static</span><span class="special">(</span><span class="identifier">word_count</span><span class="special">,</span> <span class="identifier">out</span><span class="special">,</span> <span class="string">"wc"</span><span class="special">)</span> <span class="special">?</span> <span class="number">0</span> <span class="special">:</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The shown code generator will generate output, which should be stored in
+          a file for later inclusion into the static lexical analzyer as shown in
+          the next topic (the full generated code can be viewed here).
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            The generated code will have compiled in the version number of the current
+            <span class="emphasis"><em>Spirit.Lex</em></span> library. This version number is used
+            at compilation time of your static lexer object to ensure this is compiled
+            using exactly the same version of the <span class="emphasis"><em>Spirit.Lex</em></span>
+            library as the lexer tables have been generated with. If the versions
+            do not match you will see an compilation error mentioning an <code class="computeroutput"><span class="identifier">incompatible_static_lexer_version</span></code>.
+          </p></td></tr>
+</table></div>
+<a name="spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer"></a><h6>
+<a name="id871868"></a>
+          <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer">Modifying
+          the Dynamic Analyzer</a>
+        </h6>
+<p>
+          The second required step to convert an existing dynamic lexer into a static
+          one is to change your main program at two places. First, you need to change
+          the type of the used lexer (that is the template parameter used while instantiating
+          your token definition class). While in the dynamic model we have been using
+          the <a class="link" href="../reference/lexer.html#spirit.lex.reference.lexer.the_lexertl__lexer_class_implementing_the_dynamic_model"><code class="computeroutput"><span class="identifier">lexertl_lexer</span><span class="special"><></span></code></a>
+          template, we now need to change that to the <a class="link" href="../reference/lexer.html#spirit.lex.reference.lexer.the_lexertl__static_lexer_class_implementing_the_static_model"><code class="computeroutput"><span class="identifier">lexertl_static_lexer</span><span class="special"><></span></code></a>
+          type. The second change is tightly related to the first one and involves
+          correcting the corresponding <code class="computeroutput"><span class="preprocessor">#include</span></code>
+          statement to:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_static_lexertl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Otherwise the main program is not different from an equivalent program
+          using the dynamic model. This feature makes it really easy for instance
+          to develop the lexer in dynamic mode and to switch to the static mode after
+          the code has been stabilized. The simple generator application showed above
+          enables the integration of the code generator into any existing build process.
+          The following code snippet provides the overall main function, highlighting
+          the code to be changed.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+    <span class="comment">// Define the token type to be used: 'std::string' is available as the type 
+</span>    <span class="comment">// of the token value.
+</span>    <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">token</span><span class="special"><</span>
+        <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span>
+    <span class="special">></span> <span class="identifier">token_type</span><span class="special">;</span>
+
+    <span class="comment">// Define the lexer type to be used as the base class for our token 
+</span>    <span class="comment">// definition.
+</span>    <span class="comment">//
+</span>    <span class="comment">// This is the only place where the code is different from an equivalent
+</span>    <span class="comment">// dynamic lexical analyzer. We use the `lexertl::static_lexer<>` instead of
+</span>    <span class="comment">// the `lexertl::lexer<>` as the base class for our token defintion type.
+</span>    <span class="comment">//
+</span>    <span class="comment">// As we specified the suffix "wc" while generating the static tables we 
+</span>    <span class="comment">// need to pass the type lexertl::static_::lexer_wc as the second template
+</span>    <span class="comment">// parameter below (see word_count_generate.cpp).
+</span>    <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">static_lexer</span><span class="special"><</span>
+        <span class="identifier">token_type</span><span class="special">,</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">static_</span><span class="special">::</span><span class="identifier">lexer_wc</span>
+    <span class="special">></span> <span class="identifier">lexer_type</span><span class="special">;</span>
+
+    <span class="comment">// Define the iterator type exposed by the lexer.
+</span>    <span class="keyword">typedef</span> <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">>::</span><span class="identifier">iterator_type</span> <span class="identifier">iterator_type</span><span class="special">;</span>
+
+    <span class="comment">// Now we use the types defined above to create the lexer and grammar
+</span>    <span class="comment">// object instances needed to invoke the parsing process.
+</span>    <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">></span> <span class="identifier">word_count</span><span class="special">;</span>           <span class="comment">// Our lexer
+</span>    <span class="identifier">word_count_grammar</span><span class="special"><</span><span class="identifier">iterator_type</span><span class="special">></span> <span class="identifier">g</span> <span class="special">(</span><span class="identifier">word_count</span><span class="special">);</span>   <span class="comment">// Our parser
+</span>
+    <span class="comment">// Read in the file into memory.
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">();</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">last</span> <span class="special">=</span> <span class="special">&</span><span class="identifier">first</span><span class="special">[</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">()];</span>
+
+    <span class="comment">// Parsing is done based on the the token stream, not the character stream.
+</span>    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tokenize_and_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">word_count</span><span class="special">,</span> <span class="identifier">g</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">r</span><span class="special">)</span> <span class="special">{</span>    <span class="comment">// success
+</span>        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"lines: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">l</span> <span class="special"><<</span> <span class="string">", words: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">w</span> 
+                  <span class="special"><<</span> <span class="string">", characters: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">c</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">else</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="string">"Parsing failed\n"</span> <span class="special"><<</span> <span class="string">"stopped at: \""</span> 
+                  <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            The generated code for the static lexer contains the token ids as these
+            have been assigned either explicitly by the programmer or implicitely
+            during lexer construction. It is your responsibility to make sure that
+            all instances of a particular static lexer type use exactly the same
+            token ids. This is ensured by default as long as no <code class="computeroutput"><span class="identifier">first_id</span></code>
+            is specified during construction of the static lexer instances (the constructor
+            of the lexer object has a seocnd default parameter allowing to designate
+            a starting token id to be used while assigning the ids to the token definitions).
+          </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_parsing.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,250 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tokenizing Input Data</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../abstracts.html" title="Abstracts">
+<link rel="prev" href="lexer_primitives/lexer_token_definition.html" title="Ways to define Tokens">
+<link rel="next" href="lexer_semantic_actions.html" title="Lexer Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_primitives/lexer_token_definition.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Tokenizing Input Data">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.abstracts.lexer_tokenizing"></a><a class="link" href="lexer_tokenizing.html" title="Tokenizing Input Data"> Tokenizing
+        Input Data</a>
+</h4></div></div></div>
+<a name="spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function"></a><h6>
+<a name="id863845"></a>
+          <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function">The
+          tokenize function</a>
+        </h6>
+<p>
+          The <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code>
+          function is a helper function simplifying the usage of a lexer in a standalone
+          fashion. Consider you have a standalone lexer where all the required functionality
+          is implemented inside of lexer semantic actions. A good example for this
+          is the word_count_lexer
+          described in more detail in the section <a class="link" href="../tutorials/lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">Lex
+          Quickstart 2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>.
+          As a reminder, here is the token definition class:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_tokens</span> <span class="special">:</span> <span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">word_count_tokens</span><span class="special">()</span>
+      <span class="special">:</span> <span class="identifier">c</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">w</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">l</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="string">"[^ \t\n]+"</span><span class="special">)</span>     <span class="comment">// define tokens
+</span>      <span class="special">,</span> <span class="identifier">eol</span><span class="special">(</span><span class="string">"\n"</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">any</span><span class="special">(</span><span class="string">"."</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">_start</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">_end</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+
+        <span class="comment">// associate tokens with the lexer
+</span>        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span> 
+            <span class="special">=</span>   <span class="identifier">word</span>  <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">_start</span><span class="special">,</span> <span class="identifier">_end</span><span class="special">)]</span>
+            <span class="special">|</span>   <span class="identifier">eol</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)]</span> 
+            <span class="special">|</span>   <span class="identifier">any</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)]</span>
+            <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">l</span><span class="special">;</span>
+    <span class="identifier">token_def</span><span class="special"><></span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">eol</span><span class="special">,</span> <span class="identifier">any</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The construct used to tokenize the given input, while discarding all generated
+          tokens is a common application of the lexer. For this reason <span class="emphasis"><em>Spirit.Lex</em></span>
+          exposes an API function <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code> minimizing the code required:
+        </p>
+<pre class="programlisting"><span class="comment">// Read input from the given file
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+
+<span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">></span> <span class="identifier">word_count_lexer</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+
+<span class="comment">// Tokenize all the input, while discarding all generated tokens
+</span><span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tokenize</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">word_count_lexer</span><span class="special">);</span>
+</pre>
+<p>
+          This code is completely equivalent to the more verbose version as shown
+          in the section <a class="link" href="../tutorials/lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">Lex
+          Quickstart 2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>.
+          The function <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code>
+          will return either if the end of the input has been reached (in this case
+          the return value will be <code class="computeroutput"><span class="keyword">true</span></code>),
+          or if the lexer couldn't match any of the token definitions in the input
+          (in this case the return value will be <code class="computeroutput"><span class="keyword">false</span></code>
+          and the iterator <code class="computeroutput"><span class="identifier">first</span></code>
+          will point to the first not matched character in the input sequence).
+        </p>
+<p>
+          The prototype of this function is:
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">tokenize</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Lexer</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">lex</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">::</span><span class="identifier">char_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">initial_state</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+</pre>
+<div class="variablelist" title="where:">
+<p class="title"><b>where:</b></p>
+<dl>
+<dt><span class="term">Iterator& first</span></dt>
+<dd><p>
+              The begin of the input sequence to tokenize. The value of this iterator
+              will be updated by the lexer, pointing to the first not matched character
+              of the input after the function returns.
+            </p></dd>
+<dt><span class="term">Iterator last</span></dt>
+<dd><p>
+              The end of the input sequence to tokenize.
+            </p></dd>
+<dt><span class="term">Lexer const& lex</span></dt>
+<dd><p>
+              The lexer instance to use for tokenization.
+            </p></dd>
+<dt><span class="term">Lexer::char_type const* initial_state</span></dt>
+<dd><p>
+              This optional parameter can be used to specify the initial lexer state
+              fo rthe tokenization.
+            </p></dd>
+</dl>
+</div>
+<p>
+          A second overload of the <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code> function allows to specify any arbitrary
+          function or function object to be called for each of the generated tokens.
+          For some applications this is very useful, as it might avoid having lexer
+          semantic actions. For an example of how to use this function, please have
+          a look at word_count_functor.cpp:
+        </p>
+<p>
+          </p>
+<p>
+            The main function simply loads the given file into memory (as a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>), instantiates an instance of
+            the token definition template using the correct iterator type (<code class="computeroutput"><span class="identifier">word_count_tokens</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*></span></code>), and finally calls <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize</span></code>, passing an instance of the
+            counter function object. The return value of <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize</span><span class="special">()</span></code> will be <code class="computeroutput"><span class="keyword">true</span></code>
+            if the whole input sequence has been successfully tokenized, and <code class="computeroutput"><span class="keyword">false</span></code> otherwise.
+          </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+    <span class="comment">// these variables are used to count characters, words and lines
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">w</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+
+    <span class="comment">// read input from the given file
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+
+    <span class="comment">// create the token definition instance needed to invoke the lexical analyzer
+</span>    <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><></span> <span class="special">></span> <span class="identifier">word_count_functor</span><span class="special">;</span>
+
+    <span class="comment">// tokenize the given string, the bound functor gets invoked for each of 
+</span>    <span class="comment">// the matched tokens
+</span>    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">();</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">last</span> <span class="special">=</span> <span class="special">&</span><span class="identifier">first</span><span class="special">[</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">()];</span>
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tokenize</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">word_count_functor</span><span class="special">,</span> 
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span><span class="identifier">counter</span><span class="special">(),</span> <span class="identifier">_1</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)));</span>
+
+    <span class="comment">// print results
+</span>    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">r</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"lines: "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">", words: "</span> <span class="special"><<</span> <span class="identifier">w</span> 
+                  <span class="special"><<</span> <span class="string">", characters: "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">else</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Lexical analysis failed\n"</span> <span class="special"><<</span> <span class="string">"stopped at: \""</span> 
+                  <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Here is the prototype of this <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code> function overload:
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">F</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">tokenize</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Lexer</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">lex</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span>
+  <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">::</span><span class="identifier">char_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">initial_state</span> <span class="special">=</span> <span class="number">0</span><span class="special">);</span>
+</pre>
+<div class="variablelist" title="where:">
+<p class="title"><b>where:</b></p>
+<dl>
+<dt><span class="term">Iterator& first</span></dt>
+<dd><p>
+              The begin of the input sequence to tokenize. The value of this iterator
+              will be updated by the lexer, pointing to the first not matched character
+              of the input after the function returns.
+            </p></dd>
+<dt><span class="term">Iterator last</span></dt>
+<dd><p>
+              The end of the input sequence to tokenize.
+            </p></dd>
+<dt><span class="term">Lexer const& lex</span></dt>
+<dd><p>
+              The lexer instance to use for tokenization.
+            </p></dd>
+<dt><span class="term">F f</span></dt>
+<dd><p>
+              A function or function object to be called for each matched token.
+              This function is expected to have the prototype: <code class="computeroutput"><span class="keyword">bool</span>
+              <span class="identifier">f</span><span class="special">(</span><span class="identifier">Lexer</span><span class="special">::</span><span class="identifier">token_type</span><span class="special">);</span></code>
+              and should return <code class="computeroutput"><span class="keyword">false</span></code>
+              if the supplied token instance is invald (the <code class="computeroutput"><span class="identifier">tokenize</span><span class="special">()</span></code> function will return immediatly).
+            </p></dd>
+<dt><span class="term">Lexer::char_type const* initial_state</span></dt>
+<dd><p>
+              This optional parameter can be used to specify the initial lexer state
+              fo rthe tokenization.
+            </p></dd>
+</dl>
+</div>
+<a name="spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function"></a><h6>
+<a name="id867477"></a>
+          <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function">The
+          generate_static function</a>
+        </h6>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_primitives/lexer_token_definition.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,248 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Introduction to Spirit.Lex</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="prev" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="next" href="tutorials.html" title="Spirit.Lex Tutorials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Introduction to Spirit.Lex">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.lex.lexer_introduction"></a><a class="link" href="lexer_introduction.html" title="Introduction to Spirit.Lex"> Introduction to <span class="emphasis"><em>Spirit.Lex</em></span></a>
+</h3></div></div></div>
+<p>
+        Lexical scanning is the process of analyzing the stream of input characters
+        and separating it into strings called tokens, separated by whitespace. Most
+        compiler texts start here, and devote several chapters to discussing various
+        ways to build scanners. <span class="emphasis"><em>Spirit.Lex</em></span> is a library built
+        to take care of the complexities of creating a lexer for your grammar (in
+        this documentation we will use the terms 'lexical analyzer', 'lexer' and
+        'scanner' interchangably). All it needs to create a lexer is to know the
+        set of patterns describing the different tokens you want to recognize in
+        the input. To make this a bit more formal, here are some definitions:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          A token is a sequence of consecutive characters having a collective meaning.
+          Tokens may have attributes specific to the token type, carrying additional
+          information about the matched character sequence.
+        </li>
+<li class="listitem">
+          A pattern is a rule expressed as a regular expression and describing how
+          a particular token can be formed. For example, <code class="literal">[A-Za-z][A-Za-z_0-9]*</code>
+          is a pattern for a rule matching C++ identifiers.
+        </li>
+<li class="listitem">
+          Characters between tokens are called whitespace; these include spaces,
+          tabs, newlines, and formfeeds. Many people also count comments as whitespace,
+          though since some tools such as lint look at comments, this conflation
+          is not perfect.
+        </li>
+</ul></div>
+<a name="spirit.lex.lexer_introduction.why_use_a_separate_lexer_"></a><h5>
+<a name="id850040"></a>
+        <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.why_use_a_separate_lexer_">Why
+        Use a Separate Lexer?</a>
+      </h5>
+<p>
+        Typically, lexical scanning is done in a separate module from the parser,
+        feeding the parser with a stream of input tokens only. Theoretically it is
+        not necessary implement this separation as in the end there is only one set
+        of syntactical rules defining the language, so in theory we could write the
+        whole parser in one module. In fact, <span class="emphasis"><em>Spirit.Qi</em></span> allows
+        you to write parsers without using a lexer, parsing the input character stream
+        directly, and for the most part this is the way Spirit
+        has been used since its invention.
+      </p>
+<p>
+        However, this separation has both practical and theoretical bases and proves
+        to be very useful in practical applications. In 1956, Noam Chomsky defined
+        the "Chomsky Hierarchy" of grammars:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Type 0: Unrestricted grammars (e.g., natural languages)
+        </li>
+<li class="listitem">
+          Type 1: Context-Sensitive grammars
+        </li>
+<li class="listitem">
+          Type 2: Context-Free grammars
+        </li>
+<li class="listitem">
+          Type 3: Regular grammars
+        </li>
+</ul></div>
+<p>
+        The complexity of these grammars increases from regular grammars being the
+        simplest to unrestricted grammars being the most complex. Similarly, the
+        complexity of the recognizers for these grammars increases. Although, a few
+        features of some programming languages (such as C++) are Type 1, fortunately
+        for the most part programming languages can be described using only the Types
+        3 and 2. The neat part about these two types is that they are well known
+        and the ways to parse them are well understood. It has been shown that any
+        regular grammar can be parsed using a state machine (finite automaton). Similarly,
+        context-free grammars can always be parsed using a push-down automaton (essentially
+        a state machine augmented by a stack).
+      </p>
+<p>
+        In real programming languages and practical grammars the parts that can be
+        handled as regular expressions tend to be the lower-level parts, such as
+        the definition of an identifier or of an integer value:
+      </p>
+<pre class="programlisting"><span class="identifier">letter</span>     <span class="special">:=</span> <span class="special">[</span><span class="identifier">a</span><span class="special">-</span><span class="identifier">zA</span><span class="special">-</span><span class="identifier">Z</span><span class="special">]</span>
+<span class="identifier">digit</span>      <span class="special">:=</span> <span class="special">[</span><span class="number">0</span><span class="special">-</span><span class="number">9</span><span class="special">]</span>
+
+<span class="identifier">identifier</span> <span class="special">:=</span> <span class="identifier">letter</span> <span class="special">[</span> <span class="identifier">letter</span> <span class="special">|</span> <span class="identifier">digit</span> <span class="special">]*</span>
+<span class="identifier">integer</span>    <span class="special">:=</span> <span class="identifier">digit</span><span class="special">+</span>
+</pre>
+<p>
+        Higher level parts of practical grammars tend to be more complex and can't
+        be implemented using plain regular expressions. We need to store information
+        on the built-in hardware stack while recursing the grammar hierarchy, and
+        that in fact this is the preferred approach used for top-down parsing. Since
+        it takes a different kind of abstract machine to parse the two types of grammars,
+        it proved to be efficient to separate the lexical scanner into a separate
+        module which is built around the idea of a state machine. The goal here is
+        to use the simplest parsing technique needed for the job.
+      </p>
+<p>
+        Another, more practical, reason for separating the scanner from the parser
+        is the need for backtracking during parsing. The input data is a stream of
+        characters, which is often thought to be processed left to right without
+        any backtracking. Unfortunately, in practice most of the time that isn't
+        possible. Almost every language has certain keywords such as IF, FOR, and
+        WHILE. The decision if a certain character sequence actually comprises a
+        keyword or just an identifier often can be made only after seeing the first
+        delimiter <span class="emphasis"><em>after</em></span> it. This already is a limited form of
+        backtracking, since we need to store the string long enough to be able to
+        make the decision. The same is true for more coarse grained language features
+        such as nested IF/ELSE statements, where the decision about to which IF belongs
+        the last ELSE statement can be made only after seeing the whole construct.
+      </p>
+<p>
+        So the structure of a conventional compiler often involves splitting up the
+        functions of the lower-level and higher-level parsing. The lexical scanner
+        deals with things at the character level, collecting characters into strings,
+        converting character sequence into different representations as integers,
+        etc., and passing them along to the parser proper as indivisible tokens.
+        It's also considered normal to let the scanner do additional jobs, such as
+        identifying keywords, storing identifiers in tables, etc.
+      </p>
+<p>
+        Now, Spirit follows this
+        structure, where <span class="emphasis"><em>Spirit.Lex</em></span> can be used to implement
+        state machine based recognizers, while <span class="emphasis"><em>Spirit.Qi</em></span> can
+        be used to build recognizers for context free grammars. Since both modules
+        are seemlessly integrated with each other and with the C++ target language
+        it is even possible to use the provided functionality to build more complex
+        grammar recognizers.
+      </p>
+<a name="spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_"></a><h5>
+<a name="id850249"></a>
+        <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_">Advantages
+        of using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+      </h5>
+<p>
+        The advantage of using <span class="emphasis"><em>Spirit.Lex</em></span> to create the lexical
+        analyzer over using more traditional tools such as Flex
+        is its carefully crafted integration with the Spirit
+        library and the C++ host language. You don't need any external tools to generate
+        the code, your lexer will be perfectly integrated with the rest of your program,
+        making it possible to freely access any context information and data structure.
+        Since the C++ compiler sees all the code it will generate optimal code nomatter
+        what configuration options have been chosen by the user. <span class="emphasis"><em>Spirit.Lex</em></span>
+        gives you the vast majority of features you could get from a similar Flex program without the need
+        to leave C++ as a host language:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          The definition of tokens is done using regular expressions (patterns)
+        </li>
+<li class="listitem">
+          The token definitions can refer to special substitution strings (pattern
+          macros) simplifying pattern definitions
+        </li>
+<li class="listitem">
+          The generated lexical scanner may have multiple start states
+        </li>
+<li class="listitem">
+          It is possible to attach code to any of the token definitions; this code
+          gets executed whenever the corresponding token pattern has been matched
+        </li>
+</ul></div>
+<p>
+        Even if it is possible to use <span class="emphasis"><em>Spirit.Lex</em></span> to generate
+        C++ code representing the lexical analyzer (we will refer to that as the
+        <span class="emphasis"><em>static</em></span> model, described in more detail in the section
+        <a class="link" href="abstracts/lexer_static_model.html" title="The Static Lexer Model">The <span class="emphasis"><em>Static</em></span>
+        Model</a>) - a model very similar to the way Flex
+        operates - we will mainly focus on the opposite, the <span class="emphasis"><em>dynamic</em></span>
+        model. You can directly integrate the token definitions into your C++ program,
+        building the lexical analyzer dynamically at runtime. The dynamic model is
+        something not supported by Flex
+        or other lexical scanner generators (such as re2c,
+        Ragel, etc.).
+        But it is very flexible and allows you to speed up the development of your
+        application.
+      </p>
+<a name="spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_"></a><h5>
+<a name="id850352"></a>
+        <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_">The
+        Library Structure of <span class="emphasis"><em>Spirit.Lex</em></span></a>
+      </h5>
+<p>
+        The <a class="link" href="lexer_introduction.html#spirit.lexerflow" title="Figure 6. The Library structure and Common Flow of Information while using Spirit.Lex in an application">figure</a> below shows a high level
+        overview of how the <span class="emphasis"><em>Spirit.Lex</em></span> library might be used
+        in an application. <span class="emphasis"><em>Spirit.Lex</em></span> allows to create lexical
+        analyzers based on patterns. These patterns are regular expression based
+        rules used to define the different tokens to be recognized in the character
+        input sequence. The input sequence is expected to be provided to the lexical
+        analyzer as an arbitrary standard forward iterator. The lexical analyzer
+        itself exposes a standard forward iterator as well. The difference here is
+        that the exposed iterator provides access to the token sequence instead of
+        to the character sequence. The tokens in this sequence are constructed on
+        the fly by analyzing the underlying character sequence and matching this
+        to the patterns as defined by the application.
+      </p>
+<p>
+        </p>
+<div class="figure">
+<a name="spirit.lexerflow"></a><p class="title"><b>Figure 6. The Library structure and Common Flow of Information while
+        using <span class="emphasis"><em>Spirit.Lex</em></span> in an application</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../.././images/lexerflow.png" alt="The Library structure and Common Flow of Information while using Spirit.Lex in an application"></span></div>
+</div>
+<p><br class="figure-break">
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lex.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/quick_reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/quick_reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quick Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="prev" href="abstracts/lexer_states.html" title="Lexer States">
+<link rel="next" href="quick_reference/common_notation.html" title="Common Notation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="abstracts/lexer_states.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quick Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.lex.quick_reference"></a><a class="link" href="quick_reference.html" title="Quick Reference"> Quick Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="quick_reference/common_notation.html">Common
+        Notation</a></span></dt>
+<dt><span class="section"><a href="quick_reference/lexers.html"> Primitive Lexer
+        Components</a></span></dt>
+<dt><span class="section"><a href="quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></div>
+<p>
+        This quick reference section is provided for convenience. You can use this
+        section as a sort of a "cheat-sheet" on the most commonly used
+        Lex components. It is not intended to be complete, but should give you an
+        easy way to recall a particular component without having to dig up on pages
+        and pages of reference doumentation.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="abstracts/lexer_states.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,103 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Common Notation</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="../quick_reference.html" title="Quick Reference">
+<link rel="next" href="lexers.html" title="Primitive Lexer Components">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Common Notation">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.quick_reference.common_notation"></a><a class="link" href="common_notation.html" title="Common Notation">Common
+        Notation</a>
+</h4></div></div></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L</span></code></span></dt>
+<dd><p>
+              Lexer type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">l</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span>
+          <span class="identifier">b</span><span class="special">,</span>
+          <span class="identifier">c</span><span class="special">,</span>
+          <span class="identifier">d</span></code></span></dt>
+<dd><p>
+              Lexer objects
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+              The type of an iterator referring to the underlying input sequence
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">IdType</span></code></span></dt>
+<dd><p>
+              The token id type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dd><p>
+              The lexer components <code class="computeroutput"><span class="identifier">Context</span></code>
+              type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span></code></span></dt>
+<dd><p>
+              Character-class specific character (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Ch</span></code></span></dt>
+<dd><p>
+              Character-class specific character type (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">str</span></code></span></dt>
+<dd><p>
+              Character-class specific string (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Str</span></code></span></dt>
+<dd><p>
+              Character-class specific string type (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></span></dt>
+<dd><p>
+              An attribute type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
+<dd><p>
+              A (semantic action) function with signature <code class="computeroutput"><span class="keyword">void</span>
+              <span class="identifier">f</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span>
+              <span class="identifier">Iterator</span><span class="special">&,</span>
+              <span class="identifier">pass_flag</span><span class="special">&,</span>
+              <span class="identifier">Idtype</span><span class="special">&,</span>
+              <span class="identifier">Context</span><span class="special">&)</span></code>.
+            </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,205 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Primitive Lexer Components</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="common_notation.html" title="Common Notation">
+<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Primitive Lexer Components">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.quick_reference.lexers"></a><a class="link" href="lexers.html" title="Primitive Lexer Components"> Primitive Lexer
+        Components</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Attribute
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">ch</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  n/a
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches <code class="computeroutput"><span class="identifier">ch</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  n/a
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches <code class="computeroutput"><span class="identifier">ch</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">str</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  n/a
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches regular expression <code class="computeroutput"><span class="identifier">str</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">string</span><span class="special">(</span><span class="identifier">str</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  n/a
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches regular expression <code class="computeroutput"><span class="identifier">str</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches the immediate argument
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                  <span class="identifier">b</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  n/a
+                </p>
+                </td>
+<td>
+                <p>
+                  Matches any of the expressions <code class="computeroutput"><span class="identifier">a</span></code>
+                  or <code class="computeroutput"><span class="identifier">b</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">l</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Attribute of <code class="computeroutput"><span class="identifier">l</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Call semantic action <code class="computeroutput"><span class="identifier">fa</span></code>
+                  (after matching <code class="computeroutput"><span class="identifier">l</span></code>).
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            The column <span class="emphasis"><em>Attribute</em></span> in the table above lists the
+            parser attribute exposed by the lexer component if it is used as a parser
+            (see Attribute). A 'n/a' in this columns means the lexer component is
+            not usable as a parser.
+          </p></td></tr>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,100 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Phoenix</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Phoenix">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.quick_reference.phoenix"></a><a class="link" href="phoenix.html" title="Phoenix">Phoenix</a>
+</h4></div></div></div>
+<p>
+          Boost.Phoenix makes
+          it easier to attach semantic actions. You just inline your lambda expressions:
+        </p>
+<pre class="programlisting"><span class="identifier">l</span><span class="special">[</span><span class="identifier">phoenix</span><span class="special">-</span><span class="identifier">lambda</span><span class="special">-</span><span class="identifier">expression</span><span class="special">]</span>
+</pre>
+<p>
+          <span class="emphasis"><em>Spirit.Lex</em></span> provides some Boost.Phoenix
+          placeholders to access important information from the <code class="computeroutput"><span class="identifier">Context</span></code>
+          that are otherwise fiddly to extract.
+        </p>
+<div class="variablelist" title="Spirit.Lex specific Phoenix placeholders">
+<p class="title"><b>Spirit.Lex specific Phoenix placeholders</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_start</span><span class="special">,</span> <span class="identifier">_end</span></code></span></dt>
+<dd><p>
+              Iterators pointing to the begin and the end of the matched input sequence.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_pass</span></code></span></dt>
+<dd><p>
+              Assign <code class="computeroutput"><span class="keyword">false</span></code> to <code class="computeroutput"><span class="identifier">_pass</span></code> to force the current match
+              to fail.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_tokenid</span></code></span></dt>
+<dd><p>
+              The token id of the matched token.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dd><p>
+              The token value of the matched token.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_state</span></code></span></dt>
+<dd><p>
+              The lexer state the token has been matched in.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_eoi</span></code></span></dt>
+<dd><p>
+              Iterator referring to the current end of the input sequence.
+            </p></dd>
+</dl>
+</div>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            All of the placeholders in the list above (except <code class="computeroutput"><span class="identifier">_eoi</span></code>)
+            can be changed from the inside of the semantic action allowing to modify
+            the lexer behavior.
+          </p></td></tr>
+</table></div>
+<p>
+          For more information see <a class="link" href="../abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer
+          Semantic Actions</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,79 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="lexers.html" title="Primitive Lexer Components">
+<link rel="next" href="phoenix.html" title="Phoenix">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexers.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.quick_reference.semantic_actions"></a><a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic
+        Actions</a>
+</h4></div></div></div>
+<p>
+          Has the form:
+        </p>
+<pre class="programlisting"><span class="identifier">l</span><span class="special">[</span><span class="identifier">f</span><span class="special">]</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">f</span></code> is a function with
+          the signatures:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">();</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&,</span> <span class="identifier">Idtype</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&,</span> <span class="identifier">Idtype</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&);</span>
+</pre>
+<p>
+          You can use <code class="computeroutput">Boost.Bind</code>
+          to bind member functions. For function objects, the allowed signatures
+          are:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&,</span> <span class="identifier">Idtype</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">pass_flag</span><span class="special">&,</span> <span class="identifier">Idtype</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+          The <code class="computeroutput"><span class="identifier">unused_type</span></code> is used
+          in the signatures above to signify 'don't care'.
+        </p>
+<p>
+          For more information see <a class="link" href="../abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer
+          Semantic Actions</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexers.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="prev" href="quick_reference/phoenix.html" title="Phoenix">
+<link rel="next" href="reference/lexer_concepts.html" title="Lexer Concepts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/lexer_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.lex.reference"></a><a class="link" href="reference.html" title="Reference"> Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Lexer Concepts</span></dt>
+<dt><span class="section"> Basics</span></dt>
+<dt><span class="section"><a href="reference/primitives.html"> Token definition
+        Primitives</a></span></dt>
+<dt><span class="section"> Lexer Class</span></dt>
+<dt><span class="section"> Token Class</span></dt>
+<dt><span class="section"> TokenDef Class</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/lexer_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lex_basics.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lex_basics.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,162 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basics</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="lexer_concepts/narylexer.html" title="NaryLexer">
+<link rel="next" href="primitives.html" title="Token definition Primitives">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_concepts/narylexer.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Basics">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.lex_basics"></a><a class="link" href="lex_basics.html" title="Basics"> Basics</a>
+</h4></div></div></div>
+<a name="spirit.lex.reference.lex_basics.character_encoding_namespace"></a><h6>
+<a name="id878385"></a>
+          <a class="link" href="lex_basics.html#spirit.lex.reference.lex_basics.character_encoding_namespace">Character
+          Encoding Namespace</a>
+        </h6>
+<p>
+          Some generators need to know which character set a <code class="computeroutput"><span class="keyword">char</span></code>
+          or <code class="computeroutput"><span class="keyword">wchar_t</span></code> is operating on.
+          For example, the regular expression <code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">-</span><span class="number">9</span><span class="special">]</span></code> spans a different set of characters in
+          different character sets. Where necessary, Spirit encodes (tags) the token
+          definitions with the character set.
+        </p>
+<p>
+          We have a namespace for each character set Spirit will be supporting. That
+          includes <code class="computeroutput"><span class="identifier">ascii</span></code>, <code class="computeroutput"><span class="identifier">iso8859_1</span></code>, <code class="computeroutput"><span class="identifier">standard</span></code>
+          and <code class="computeroutput"><span class="identifier">standard_wide</span></code> (and
+          in the future, <code class="computeroutput"><span class="identifier">unicode</span></code>).
+          In each of the character encoding namespaces, we place tagged versions
+          of token definitions such as <code class="computeroutput"><span class="identifier">char_</span></code>
+          and <code class="computeroutput"><span class="identifier">string</span></code>.
+        </p>
+<p>
+          Example:
+        </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span> <span class="comment">// use ASCII character token definitions
+</span></pre>
+<p>
+          Namespaces:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::standard
+          </li>
+<li class="listitem">
+            boost::spirit::standard_wide
+          </li>
+</ul></div>
+<p>
+          For ease of use, the components in this namespaces are also brought into
+          the lex sub-namespaces with the same names:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::lex::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::lex::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::lex::standard
+          </li>
+<li class="listitem">
+            boost::spirit::lex::standard_wide
+          </li>
+</ul></div>
+<a name="spirit.lex.reference.lex_basics.examples"></a><h6>
+<a name="id878585"></a>
+          <a class="link" href="lex_basics.html#spirit.lex.reference.lex_basics.examples">Examples</a>
+        </h6>
+<p>
+          All sections in the reference present some real world examples. The examples
+          use a common test harness to keep the example code as minimal and direct
+          to the point as possible. The test harness is presented below.
+        </p>
+<p>
+          Some includes:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Our test functions:
+        </p>
+<p>
+          This one tests token definitions.
+        </p>
+<p>
+        </p>
+<a name="spirit.lex.reference.lex_basics.models"></a><h6>
+<a name="id878797"></a>
+          <a class="link" href="lex_basics.html#spirit.lex.reference.lex_basics.models">Models</a>
+        </h6>
+<p>
+          Predefined models include:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            any literal string, e.g. "Hello, World",
+          </li>
+<li class="listitem">
+            a pointer/reference to a null-terminated array of characters
+          </li>
+<li class="listitem">
+            a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">Char</span><span class="special">></span></code>
+</li>
+</ul></div>
+<p>
+          The namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code> is open for users to provide their
+          own specializations.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_concepts/narylexer.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,64 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Class</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="primitives/char_tokendef.html" title="Tokens Matching Single Characters">
+<link rel="next" href="token.html" title="Token Class">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitives/char_tokendef.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="token.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Class">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.lexer"></a><a class="link" href="lexer.html" title="Lexer Class"> Lexer Class</a>
+</h4></div></div></div>
+<a name="spirit.lex.reference.lexer.the_lexertl__lexer_class_implementing_the_dynamic_model"></a><h6>
+<a name="id879564"></a>
+          <a class="link" href="lexer.html#spirit.lex.reference.lexer.the_lexertl__lexer_class_implementing_the_dynamic_model">The
+          lexertl::lexer Class Implementing the Dynamic Model</a>
+        </h6>
+<a name="spirit.lex.reference.lexer.the_lexertl__actor_lexer_class_implementing_the_dynamic_model"></a><h6>
+<a name="id879577"></a>
+          <a class="link" href="lexer.html#spirit.lex.reference.lexer.the_lexertl__actor_lexer_class_implementing_the_dynamic_model">The
+          lexertl::actor_lexer Class Implementing the Dynamic Model</a>
+        </h6>
+<a name="spirit.lex.reference.lexer.the_lexertl__static_lexer_class_implementing_the_static_model"></a><h6>
+<a name="id879591"></a>
+          <a class="link" href="lexer.html#spirit.lex.reference.lexer.the_lexertl__static_lexer_class_implementing_the_static_model">The
+          lexertl::static_lexer Class Implementing the Static Model</a>
+        </h6>
+<a name="spirit.lex.reference.lexer.the_lexertl__static_actor_lexer_class_implementing_the_static_model"></a><h6>
+<a name="id879604"></a>
+          <a class="link" href="lexer.html#spirit.lex.reference.lexer.the_lexertl__static_actor_lexer_class_implementing_the_static_model">The
+          lexertl::static_actor_lexer Class Implementing the Static Model</a>
+        </h6>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitives/char_tokendef.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="token.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer Concepts</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="lexer_concepts/lexer.html" title="Lexer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_concepts/lexer.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer Concepts">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.lexer_concepts"></a><a class="link" href="lexer_concepts.html" title="Lexer Concepts"> Lexer Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Lexer</span></dt>
+<dt><span class="section">PrimitiveLexer</span></dt>
+<dt><span class="section">UnaryLexer</span></dt>
+<dt><span class="section">NaryLexer</span></dt>
+</dl></div>
+<p>
+          <span class="emphasis"><em>Spirit.Lex</em></span> components fall into a couple of generalized
+          concepts.
+          The <span class="emphasis"><em>Lexer</em></span> is the most fundamental concept. All <span class="emphasis"><em>Spirit.Lex</em></span>
+          components are models of the <span class="emphasis"><em>Lexer</em></span> concept. <span class="emphasis"><em>PrimitiveLexer</em></span>,
+          <span class="emphasis"><em>UnaryLexer</em></span>, and <span class="emphasis"><em>NaryLexer</em></span> are
+          all refinements of the <span class="emphasis"><em>Lexer</em></span> concept.
+        </p>
+<p>
+          The following sections provide details on these concepts.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_concepts/lexer.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,231 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lexer</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_concepts.html" title="Lexer Concepts">
+<link rel="prev" href="../lexer_concepts.html" title="Lexer Concepts">
+<link rel="next" href="primitivelexer.html" title="PrimitiveLexer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitivelexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lexer">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.reference.lexer_concepts.lexer"></a><a class="link" href="lexer.html" title="Lexer">Lexer</a>
+</h5></div></div></div>
+<a name="spirit.lex.reference.lexer_concepts.lexer.description"></a><h6>
+<a name="id875197"></a>
+            <a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.description">Description</a>
+          </h6>
+<p>
+            The <span class="emphasis"><em>Lexer</em></span> is the most fundamental concept. A Lexer
+            has a member function, <code class="computeroutput"><span class="identifier">collect</span></code>,
+            that accepts a token definition container <code class="computeroutput"><span class="identifier">Def</span></code>,
+            and a the name of the lexer state the token definitions of the lexer
+            component need to be added to (a string). It doesn't return anything
+            (return type is <code class="computeroutput"><span class="keyword">void</span></code>). Each
+            Lexer can represent a specific pattern or algorithm, or it can be a more
+            complex lexer component formed as a composition of other Lexer's. Additionally,
+            a Lexer exposes a member <code class="computeroutput"><span class="identifier">add_actions</span></code>,
+            that accepts the token definition container <code class="computeroutput"><span class="identifier">Def</span></code>,
+            while returning nothing (again, the returned type is <code class="computeroutput"><span class="keyword">void</span></code>).
+          </p>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Lexer</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Lexer</span></code> type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Def</span></code></span></dt>
+<dd><p>
+                A token definition conatiner type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">State</span></code></span></dt>
+<dd><p>
+                A type used to represent lexer state names.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.lex.reference.lexer_concepts.lexer.valid_expressions"></a><h6>
+<a name="id875359"></a>
+            <a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In the expressions below, the behavior of the lexer component, <code class="computeroutput"><span class="identifier">l</span></code>, is left unspecified in the base
+            <code class="computeroutput"><span class="identifier">Lexer</span></code> concept. These
+            are specified in subsequent, more refined concepts and by the actual
+            models therof.
+          </p>
+<p>
+            For any Lexer the following expressions must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">collect</span><span class="special">(</span><span class="identifier">def</span><span class="special">,</span>
+                    <span class="identifier">state</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Add all token definitions provided by this Lexer instance to
+                    the lexer state <code class="computeroutput"><span class="identifier">state</span></code>
+                    of the token definition container <code class="computeroutput"><span class="identifier">def</span></code>.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">void</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">add_actions</span><span class="special">(</span><span class="identifier">def</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Add all semantic actions provided by this Lexer instance to the
+                    token definition container <code class="computeroutput"><span class="identifier">def</span></code>.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">void</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.lexer.type_expressions"></a><h6>
+<a name="id875578"></a>
+            <a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">L</span></code>
+                    is a Lexer, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.lexer.postcondition"></a><h6>
+<a name="id875715"></a>
+            <a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.postcondition">Postcondition</a>
+          </h6>
+<p>
+            Upon return from <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">collect</span></code> the following post conditions
+            should hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+              On return, <code class="computeroutput"><span class="identifier">def</span></code> holds
+              all token definitions defined in the Lexer, <code class="computeroutput"><span class="identifier">l</span></code>.
+              This includes all Lexer's contained inside <code class="computeroutput"><span class="identifier">l</span></code>.
+            </li></ul></div>
+<p>
+            Upon return from <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">add_actions</span></code> the following post conditions
+            should hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+              On return, <code class="computeroutput"><span class="identifier">def</span></code> holds
+              all semantic actions correctly asociated with the corresponding token
+              definitions as defined in the Lexer, <code class="computeroutput"><span class="identifier">l</span></code>.
+              This includes all semantic actiosn defined by the Lexer's contained
+              inside <code class="computeroutput"><span class="identifier">l</span></code>.
+            </li></ul></div>
+<a name="spirit.lex.reference.lexer_concepts.lexer.models"></a><h6>
+<a name="id875823"></a>
+            <a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.models">Models</a>
+          </h6>
+<p>
+            All lexer components in <span class="emphasis"><em>Spirit.Lex</em></span> are models of
+            the <span class="emphasis"><em>Lexer</em></span> concept.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitivelexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,211 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>NaryLexer</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_concepts.html" title="Lexer Concepts">
+<link rel="prev" href="unarylexer.html" title="UnaryLexer">
+<link rel="next" href="../lex_basics.html" title="Basics">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unarylexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lex_basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="NaryLexer">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.reference.lexer_concepts.narylexer"></a><a class="link" href="narylexer.html" title="NaryLexer">NaryLexer</a>
+</h5></div></div></div>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.description"></a><h6>
+<a name="id877839"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>NaryLexer</em></span> is a composite lexer component that has
+            one or more subjects. The NaryLexer allows its subjects to be treated
+            in the same way as a single instance of a <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a> following the Composite
+            Design Pattern.
+          </p>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.refinement_of"></a><h6>
+<a name="id877875"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                A NaryLexer.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L</span></code></span></dt>
+<dd><p>
+                A NaryLexer type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.valid_expressions"></a><h6>
+<a name="id877956"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>, for any NaryLexer the
+            following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">elements</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The tuple of elements.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    A Boost.Fusion
+                    Sequence of <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a> types.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.type_expressions"></a><h6>
+<a name="id878081"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">elements_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Elements tuple type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_nary_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">L</span></code>
+                    is a NaryLexer, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.invariants"></a><h6>
+<a name="id878253"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.invariants">Invariants</a>
+          </h6>
+<p>
+            For each element, <code class="computeroutput"><span class="identifier">E</span></code>,
+            in any NaryLexer, <code class="computeroutput"><span class="identifier">L</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_lexer</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.lex.reference.lexer_concepts.narylexer.models"></a><h6>
+<a name="id878338"></a>
+            <a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.models">Models</a>
+          </h6>
+<p>
+            The following lexer components conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+              lexer sequence component
+            </li></ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to models of NaryLexer
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unarylexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lex_basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>PrimitiveLexer</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_concepts.html" title="Lexer Concepts">
+<link rel="prev" href="lexer.html" title="Lexer">
+<link rel="next" href="unarylexer.html" title="UnaryLexer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unarylexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="PrimitiveLexer">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.reference.lexer_concepts.primitivelexer"></a><a class="link" href="primitivelexer.html" title="PrimitiveLexer">PrimitiveLexer</a>
+</h5></div></div></div>
+<a name="spirit.lex.reference.lexer_concepts.primitivelexer.description"></a><h6>
+<a name="id875860"></a>
+            <a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>PrimitiveLexer</em></span> is the most basic building block
+            that the client uses to build more complex lexer components.
+          </p>
+<a name="spirit.lex.reference.lexer_concepts.primitivelexer.refinement_of"></a><h6>
+<a name="id875883"></a>
+            <a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.lex.reference.lexer_concepts.primitivelexer.type_expressions"></a><h6>
+<a name="id875917"></a>
+            <a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_primitive_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">L</span></code>,
+                    is a PrimitiveLexer, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.primitivelexer.models"></a><h6>
+<a name="id876054"></a>
+            <a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.models">Models</a>
+          </h6>
+<p>
+            The following lexer components conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              character literals (i.e. <code class="computeroutput"><span class="char">'x'</span></code>),
+              <code class="computeroutput"><span class="identifier">char_</span></code>,
+            </li>
+<li class="listitem">
+              string literals (<code class="computeroutput"><span class="string">"abc"</span></code>),
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><></span></code>,
+              <code class="computeroutput"><span class="identifier">string</span></code>
+</li>
+</ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to <span class="emphasis"><em>PrimitiveLexer</em></span>
+            models here.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unarylexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,208 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>UnaryLexer</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lexer_concepts.html" title="Lexer Concepts">
+<link rel="prev" href="primitivelexer.html" title="PrimitiveLexer">
+<link rel="next" href="narylexer.html" title="NaryLexer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitivelexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="narylexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="UnaryLexer">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.reference.lexer_concepts.unarylexer"></a><a class="link" href="unarylexer.html" title="UnaryLexer">UnaryLexer</a>
+</h5></div></div></div>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.description"></a><h6>
+<a name="id876156"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>UnaryLexer</em></span> is a composite lexer component that has
+            a single subject. The UnaryLexer may change the behavior of its subject
+            following the Delegate Design Pattern.
+          </p>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.refinement_of"></a><h6>
+<a name="id876181"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                A UnaryLexer.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L</span></code></span></dt>
+<dd><p>
+                A UnaryLexer type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.valid_expressions"></a><h6>
+<a name="id876260"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>, for any UnaryLexer the
+            following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">l</span><span class="special">.</span><span class="identifier">subject</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Subject lexer component.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="lexer.html" title="Lexer"><code class="computeroutput"><span class="identifier">Lexer</span></code></a>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.type_expressions"></a><h6>
+<a name="id876376"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">L</span><span class="special">::</span><span class="identifier">subject_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The subject lexer component type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_unary_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">L</span></code>
+                    is a UnaryLexer, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.invariants"></a><h6>
+<a name="id877708"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.invariants">Invariants</a>
+          </h6>
+<p>
+            For any UnaryLexer, <code class="computeroutput"><span class="identifier">L</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.lex.reference.lexer_concepts.unarylexer.models"></a><h6>
+<a name="id877793"></a>
+            <a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.models">Models</a>
+          </h6>
+<p>
+            The following lexer components conform to this model:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+              action lexer component (allowing to attach semantic actions)
+            </li></ul></div>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add more links to models of UnaryLexer
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitivelexer.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lexer_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="narylexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Token definition Primitives</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="lex_basics.html" title="Basics">
+<link rel="next" href="primitives/char_tokendef.html" title="Tokens Matching Single Characters">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lex_basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives/char_tokendef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Token definition Primitives">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.primitives"></a><a class="link" href="primitives.html" title="Token definition Primitives"> Token definition
+        Primitives</a>
+</h4></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="primitives/char_tokendef.html"> Tokens
+          Matching Single Characters</a></span></dt></dl></div>
+<p>
+          This module includes different primitives allowing to create token definitions.
+          It includes <code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">string</span></code>, character literals, and string
+          literals.
+        </p>
+<a name="spirit.lex.reference.primitives.module_headers"></a><h6>
+<a name="id878909"></a>
+          <a class="link" href="primitives.html#spirit.lex.reference.primitives.module_headers">Module Headers</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/lex/primitives.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_primitives</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lex_basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitives/char_tokendef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,214 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tokens Matching Single Characters</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../primitives.html" title="Token definition Primitives">
+<link rel="prev" href="../primitives.html" title="Token definition Primitives">
+<link rel="next" href="../lexer.html" title="Lexer Class">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Tokens Matching Single Characters">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.lex.reference.primitives.char_tokendef"></a><a class="link" href="char_tokendef.html" title="Tokens Matching Single Characters"> Tokens
+          Matching Single Characters</a>
+</h5></div></div></div>
+<a name="spirit.lex.reference.primitives.char_tokendef.description"></a><h6>
+<a name="id878995"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.description">Description</a>
+          </h6>
+<p>
+            The character based token definitions described in this section are:
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">char_</span></code> creates token
+            definitions matching single characters. The <code class="computeroutput"><span class="identifier">char_</span></code>
+            token definition has an associated <a class="link" href="../lex_basics.html#spirit.lex.reference.lex_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as forcing lower or upper case and dealing with character ranges.
+          </p>
+<a name="spirit.lex.reference.primitives.char_tokendef.header"></a><h6>
+<a name="id879040"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.header">Header</a>
+          </h6>
+<a name="spirit.lex.reference.primitives.char_tokendef.module_headers"></a><h6>
+<a name="id879055"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.module_headers">Module
+            Headers</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/lex/lexer/char_token_def.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_char_token_def</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.lex.reference.primitives.char_tokendef.namespace"></a><h6>
+<a name="id879132"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::lex::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../lex_basics.html#spirit.lex.reference.lex_basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.lex.reference.primitives.char_tokendef.model_of"></a><h6>
+<a name="id879253"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../lexer_concepts/primitivelexer.html" title="PrimitiveLexer"><code class="computeroutput"><span class="identifier">PrimitiveLexer</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span></code>,
+            <code class="computeroutput"><span class="identifier">ch1</span></code>, <code class="computeroutput"><span class="identifier">ch2</span></code></span></dt>
+<dd><p>
+                Character-class specific character (See Character Class Types), or
+                a <a class="link" href="../../../karma/reference/karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a character-class specific character
+                value
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../lex_basics.html#spirit.lex.reference.lex_basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.lex.reference.primitives.char_tokendef.expression_semantics"></a><h6>
+<a name="id879357"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../lexer_concepts/primitivelexer.html" title="PrimitiveLexer"><code class="computeroutput"><span class="identifier">PrimitiveLexer</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character literal <code class="computeroutput"><span class="identifier">ch</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character literal <code class="computeroutput"><span class="identifier">ch</span></code>.
+                    This generator never fails (except if the underlying output stream
+                    reports an error).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Generate the character <code class="computeroutput"><span class="identifier">ch</span></code>
+                    as provided by the immediate literal value the generator is initialized
+                    from. If this generator has an associated attribute it succeeds
+                    only as long as the attribute is equal to the immediate literal
+                    (except if the underlying output stream reports an error). Otherwise
+                    this generator fails and does not generate any output.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.lex.reference.primitives.char_tokendef.example"></a><h6>
+<a name="id879539"></a>
+            <a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.example">Example</a>
+          </h6>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../primitives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitives.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../lexer.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/token.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/token.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Token Class</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="lexer.html" title="Lexer Class">
+<link rel="next" href="tokendef.html" title="TokenDef Class">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tokendef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Token Class"><div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.token"></a><a class="link" href="token.html" title="Token Class"> Token Class</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tokendef.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/reference/tokendef.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/tokendef.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,42 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>TokenDef Class</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="token.html" title="Token Class">
+<link rel="next" href="../../support.html" title="Supporting libraries">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="token.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../support.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="TokenDef Class"><div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.reference.tokendef"></a><a class="link" href="tokendef.html" title="TokenDef Class"> TokenDef Class</a>
+</h4></div></div></div></div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="token.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../support.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/tutorials.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Spirit.Lex Tutorials</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../lex.html" title="Lex - Writing Lexical Analyzers">
+<link rel="prev" href="lexer_introduction.html" title="Introduction to Spirit.Lex">
+<link rel="next" href="tutorials/lexer_tutorials.html" title="Spirit.Lex Tutorials Overview">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_introduction.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/lexer_tutorials.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Spirit.Lex Tutorials">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.lex.tutorials"></a><a class="link" href="tutorials.html" title="Spirit.Lex Tutorials"> <span class="emphasis"><em>Spirit.Lex</em></span>
+      Tutorials</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="tutorials/lexer_tutorials.html"> <span class="emphasis"><em>Spirit.Lex</em></span>
+        Tutorials Overview</a></span></dt>
+<dt><span class="section"><a href="tutorials/lexer_quickstart1.html"> Quickstart
+        1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a></span></dt>
+<dt><span class="section"><a href="tutorials/lexer_quickstart2.html"> Quickstart
+        2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a></span></dt>
+<dt><span class="section"><a href="tutorials/lexer_quickstart3.html"> Quickstart
+        3 - Counting Words Using a Parser</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_introduction.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../lex.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/lexer_tutorials.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,348 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quickstart 1 - A word counter using Spirit.Lex</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Spirit.Lex Tutorials">
+<link rel="prev" href="lexer_tutorials.html" title="Spirit.Lex Tutorials Overview">
+<link rel="next" href="lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart2.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quickstart 1 - A word counter using Spirit.Lex">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.tutorials.lexer_quickstart1"></a><a class="link" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex"> Quickstart
+        1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+</h4></div></div></div>
+<p>
+          <span class="emphasis"><em>Spirit.Lex</em></span> is very modular, which follows the general
+          building principle of the Spirit
+          libraries. You never pay for features you don't use. It is nicely integrated
+          with the other parts of Spirit
+          but nevertheless can be used separately to build standalone lexical analyzers.
+          The first quick start example describes a standalone application: counting
+          characters, words, and lines in a file, very similar to what the well known
+          Unix command <code class="computeroutput"><span class="identifier">wc</span></code> is doing
+          (for the full example code see here: word_count_functor.cpp).
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart1.prerequisites"></a><h6>
+<a name="id850621"></a>
+          <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.prerequisites">Prerequisites</a>
+        </h6>
+<p>
+          The only required <code class="computeroutput"><span class="preprocessor">#include</span></code>
+          specific to <span class="emphasis"><em>Spirit.Lex</em></span> follows. It is a wrapper for
+          all necessary definitions to use <span class="emphasis"><em>Spirit.Lex</em></span> in a standalone
+          fashion, and on top of the Lexertl
+          library. Additionally we <code class="computeroutput"><span class="preprocessor">#include</span></code>
+          two of the Boost headers to define <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">()</span></code>.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_lexertl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">bind</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">ref</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          To make all the code below more readable we introduce the following namespaces.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart1.defining_tokens"></a><h6>
+<a name="id850866"></a>
+          <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.defining_tokens">Defining
+          Tokens</a>
+        </h6>
+<p>
+          The most important step while creating a lexer using <span class="emphasis"><em>Spirit.Lex</em></span>
+          is to define the tokens to be recognized in the input sequence. This is
+          normally done by defining the regular expressions describing the matching
+          character sequences, and optionally their corresponding token ids. Additionally
+          the defined tokens need to be associated with an instance of a lexer object
+          as provided by the library. The following code snippet shows how this can
+          be done using <span class="emphasis"><em>Spirit.Lex</em></span>.
+        </p>
+<p>
+          </p>
+<p>
+            The template <code class="computeroutput"><span class="identifier">word_count_tokens</span></code>
+            defines three different tokens: <code class="computeroutput"><span class="identifier">ID_WORD</span></code>,
+            <code class="computeroutput"><span class="identifier">ID_EOL</span></code>, and <code class="computeroutput"><span class="identifier">ID_CHAR</span></code>, representing a word (anything
+            except a whitespace or a newline), a newline character, and any other
+            character (<code class="computeroutput"><span class="identifier">ID_WORD</span></code>,
+            <code class="computeroutput"><span class="identifier">ID_EOL</span></code>, and <code class="computeroutput"><span class="identifier">ID_CHAR</span></code> are enum values representing
+            the token ids, but could be anything else convertible to an integer as
+            well). The direct base class of any token definition class needs to be
+            the template <code class="computeroutput"><span class="identifier">lexer_def</span><span class="special"><></span></code>, where the corresponding template
+            parameter (here: <code class="computeroutput"><span class="identifier">lexertl_lexer</span><span class="special"><</span><span class="identifier">BaseIterator</span><span class="special">></span></code>) defines which underlying lexer engine
+            has to be used to provide the required state machine functionality. In
+            this example we use the Lexertl based lexer engine as the underlying
+            lexer type.
+          </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_tokens</span> <span class="special">:</span> <span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">word_count_tokens</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="comment">// define tokens (the regular expression to match and the corresponding
+</span>        <span class="comment">// token id) and add them to the lexer 
+</span>        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span><span class="special">.</span><span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"[^ \t\n]+"</span><span class="special">,</span> <span class="identifier">ID_WORD</span><span class="special">)</span> <span class="comment">// words (anything except ' ', '\t' or '\n')
+</span>            <span class="special">(</span><span class="string">"\n"</span><span class="special">,</span> <span class="identifier">ID_EOL</span><span class="special">)</span>         <span class="comment">// newline characters
+</span>            <span class="special">(</span><span class="string">"."</span><span class="special">,</span> <span class="identifier">ID_CHAR</span><span class="special">)</span>         <span class="comment">// anything else is a plain character
+</span>        <span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work"></a><h6>
+<a name="id851174"></a>
+          <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work">Doing
+          the Useful Work</a>
+        </h6>
+<p>
+          We will use a setup, where we want the <span class="emphasis"><em>Spirit.Lex</em></span>
+          library to invoke a given function after any of of the generated tokens
+          is recognized. For this reason we need to implement a functor taking at
+          least the generated token as an argument and returning a boolean value
+          allowing to stop the tokenization process. The default token type used
+          in this example carries a token value of the type boost::iterator_range<code class="computeroutput"><span class="special"><</span><span class="identifier">BaseIterator</span><span class="special">></span></code>
+          pointing to the matched range in the underlying input sequence.
+        </p>
+<p>
+          </p>
+<p>
+            In this example the struct 'counter' is used as a functor counting the
+            characters, words and lines in the analyzed input sequence by identifying
+            the matched tokens as passed from the <span class="emphasis"><em>Spirit.Lex</em></span>
+            library.
+          </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">counter</span>
+<span class="special">{</span>
+    <span class="comment">// the function operator gets called for each of the matched tokens
+</span>    <span class="comment">// c, l, w are references to the counters used to keep track of the numbers
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Token</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Token</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">t</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">&</span> <span class="identifier">l</span><span class="special">)</span> <span class="keyword">const</span>
+    <span class="special">{</span>
+        <span class="keyword">switch</span> <span class="special">(</span><span class="identifier">t</span><span class="special">.</span><span class="identifier">id</span><span class="special">())</span> <span class="special">{</span>
+        <span class="keyword">case</span> <span class="identifier">ID_WORD</span><span class="special">:</span>       <span class="comment">// matched a word
+</span>        <span class="comment">// since we're using a default token type in this example, every 
+</span>        <span class="comment">// token instance contains a `iterator_range<BaseIterator>` as its token
+</span>        <span class="comment">// attribute pointing to the matched character sequence in the input 
+</span>            <span class="special">++</span><span class="identifier">w</span><span class="special">;</span> <span class="identifier">c</span> <span class="special">+=</span> <span class="identifier">t</span><span class="special">.</span><span class="identifier">value</span><span class="special">().</span><span class="identifier">size</span><span class="special">();</span> 
+            <span class="keyword">break</span><span class="special">;</span>
+        <span class="keyword">case</span> <span class="identifier">ID_EOL</span><span class="special">:</span>        <span class="comment">// matched a newline character
+</span>            <span class="special">++</span><span class="identifier">l</span><span class="special">;</span> <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> 
+            <span class="keyword">break</span><span class="special">;</span>
+        <span class="keyword">case</span> <span class="identifier">ID_CHAR</span><span class="special">:</span>       <span class="comment">// matched something else
+</span>            <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> 
+            <span class="keyword">break</span><span class="special">;</span>
+        <span class="special">}</span>
+        <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>        <span class="comment">// always continue to tokenize
+</span>    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          All what's left is to write some boilerplate code helping to tie together
+          the pieces described so far. To simplify this example we call the <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize</span><span class="special">()</span></code>
+          function implemented in <span class="emphasis"><em>Spirit.Lex</em></span> (for a more detailed
+          description of this function see here: <span class="bold"><strong>FIXME</strong></span>),
+          even if we could have written a loop to iterate over the lexer iterators
+          [<code class="computeroutput"><span class="identifier">first</span></code>, <code class="computeroutput"><span class="identifier">last</span></code>)
+          as well.
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together"></a><h6>
+<a name="id852908"></a>
+          <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together">Pulling
+          Everything Together</a>
+        </h6>
+<p>
+          </p>
+<p>
+            The main function simply loads the given file into memory (as a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>), instantiates an instance of
+            the token definition template using the correct iterator type (<code class="computeroutput"><span class="identifier">word_count_tokens</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*></span></code>), and finally calls <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize</span></code>, passing an instance of the
+            counter function object. The return value of <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize</span><span class="special">()</span></code> will be <code class="computeroutput"><span class="keyword">true</span></code>
+            if the whole input sequence has been successfully tokenized, and <code class="computeroutput"><span class="keyword">false</span></code> otherwise.
+          </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+    <span class="comment">// these variables are used to count characters, words and lines
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">w</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+
+    <span class="comment">// read input from the given file
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+
+    <span class="comment">// create the token definition instance needed to invoke the lexical analyzer
+</span>    <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><></span> <span class="special">></span> <span class="identifier">word_count_functor</span><span class="special">;</span>
+
+    <span class="comment">// tokenize the given string, the bound functor gets invoked for each of 
+</span>    <span class="comment">// the matched tokens
+</span>    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">();</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">last</span> <span class="special">=</span> <span class="special">&</span><span class="identifier">first</span><span class="special">[</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">()];</span>
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tokenize</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">word_count_functor</span><span class="special">,</span> 
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span><span class="identifier">counter</span><span class="special">(),</span> <span class="identifier">_1</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)));</span>
+
+    <span class="comment">// print results
+</span>    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">r</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"lines: "</span> <span class="special"><<</span> <span class="identifier">l</span> <span class="special"><<</span> <span class="string">", words: "</span> <span class="special"><<</span> <span class="identifier">w</span> 
+                  <span class="special"><<</span> <span class="string">", characters: "</span> <span class="special"><<</span> <span class="identifier">c</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">else</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Lexical analysis failed\n"</span> <span class="special"><<</span> <span class="string">"stopped at: \""</span> 
+                  <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_"></a><h6>
+<a name="id853734"></a>
+          <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_">Comparing
+          <span class="emphasis"><em>Spirit.Lex</em></span> with Flex</a>
+        </h6>
+<p>
+          This example was deliberately chosen to be as much as possible similar
+          to the equivalent Flex
+          program (see below), which isn't too different from what has to be written
+          when using <span class="emphasis"><em>Spirit.Lex</em></span>.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            Interestingly enough, performance comparisons of lexical analyzers written
+            using <span class="emphasis"><em>Spirit.Lex</em></span> with equivalent programs generated
+            by Flex show that both
+            have comparable execution speeds! Generally, thanks to the highly optimized
+            Lexertl library
+            and due its carefully designed integration with Spirit
+            the abstraction penalty to be paid for using <span class="emphasis"><em>Spirit.Lex</em></span>
+            is neglectible.
+          </p></td></tr>
+</table></div>
+<p>
+          The remaining examples in this tutorial will use more sophisticated features
+          of <span class="emphasis"><em>Spirit.Lex</em></span>, mainly to allow further simplification
+          of the code to be written, while maintaining the similarity with corresponding
+          features of Flex. <span class="emphasis"><em>Spirit.Lex</em></span>
+          has been designed to be as much as possible similar to Flex,
+          that is why this documentation will provide the corresponding Flex
+          code for the shown <span class="emphasis"><em>Spirit.Lex</em></span> examples almost everywhere.
+          So consequently, here is the Flex
+          code corresponding to the example as shown above.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="special">%{</span>
+    <span class="preprocessor">#define</span> <span class="identifier">ID_WORD</span> <span class="number">1000</span>
+    <span class="preprocessor">#define</span> <span class="identifier">ID_EOL</span>  <span class="number">1001</span>
+    <span class="preprocessor">#define</span> <span class="identifier">ID_CHAR</span> <span class="number">1002</span>
+    <span class="keyword">int</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">w</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">%}</span>
+<span class="special">%%</span>
+<span class="special">[^</span> <span class="special">\</span><span class="identifier">t</span><span class="special">\</span><span class="identifier">n</span><span class="special">]+</span>  <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">ID_WORD</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">\</span><span class="identifier">n</span>         <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">ID_EOL</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">.</span>          <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">ID_CHAR</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">%%</span>
+<span class="keyword">bool</span> <span class="identifier">count</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">tok</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">switch</span> <span class="special">(</span><span class="identifier">tok</span><span class="special">)</span> <span class="special">{</span>
+    <span class="keyword">case</span> <span class="identifier">ID_WORD</span><span class="special">:</span> <span class="special">++</span><span class="identifier">w</span><span class="special">;</span> <span class="identifier">c</span> <span class="special">+=</span> <span class="identifier">yyleng</span><span class="special">;</span> <span class="keyword">break</span><span class="special">;</span>
+    <span class="keyword">case</span> <span class="identifier">ID_EOL</span><span class="special">:</span>  <span class="special">++</span><span class="identifier">l</span><span class="special">;</span> <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> <span class="keyword">break</span><span class="special">;</span>
+    <span class="keyword">case</span> <span class="identifier">ID_CHAR</span><span class="special">:</span> <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> <span class="keyword">break</span><span class="special">;</span>
+    <span class="keyword">default</span><span class="special">:</span>
+        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">void</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="keyword">int</span> <span class="identifier">tok</span> <span class="special">=</span> <span class="identifier">EOF</span><span class="special">;</span>
+    <span class="keyword">do</span> <span class="special">{</span>
+        <span class="identifier">tok</span> <span class="special">=</span> <span class="identifier">yylex</span><span class="special">();</span>
+        <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">count</span><span class="special">(</span><span class="identifier">tok</span><span class="special">))</span>
+            <span class="keyword">break</span><span class="special">;</span>
+    <span class="special">}</span> <span class="keyword">while</span> <span class="special">(</span><span class="identifier">EOF</span> <span class="special">!=</span> <span class="identifier">tok</span><span class="special">);</span>
+    <span class="identifier">printf</span><span class="special">(</span><span class="string">"%d %d %d\n"</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart2.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,324 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quickstart 2 - A better word counter using Spirit.Lex</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Spirit.Lex Tutorials">
+<link rel="prev" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">
+<link rel="next" href="lexer_quickstart3.html" title="Quickstart 3 - Counting Words Using a Parser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_quickstart1.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart3.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quickstart 2 - A better word counter using Spirit.Lex">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.tutorials.lexer_quickstart2"></a><a class="link" href="lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex"> Quickstart
+        2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+</h4></div></div></div>
+<p>
+          People knowing Flex will
+          probably complain about the example from the section <a class="link" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">Lex
+          Quickstart 1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+          as being overly complex and not being written to leverage the possibilities
+          provided by this tool. In particular the previous example did not directly
+          use the lexer actions to count the lines, words, and characters. So the
+          example provided in this step of the tutorial will show how to use semantic
+          actions in <span class="emphasis"><em>Spirit.Lex</em></span>. Even if it still will allow
+          to count text elements only it introduces other new concepts and configuration
+          options along the lines (for the full example code see here: word_count_lexer.cpp).
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart2.prerequisites"></a><h6>
+<a name="id854510"></a>
+          <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.prerequisites">Prerequisites</a>
+        </h6>
+<p>
+          In addition to the only required <code class="computeroutput"><span class="preprocessor">#include</span></code>
+          specific to <span class="emphasis"><em>Spirit.Lex</em></span> this example needs to include
+          a couple of header files from the Boost.Phoenix
+          library. This example shows how to attach functors to token definitions,
+          which could be done using any type of C++ technique resulting in a callable
+          object. Using Boost.Phoenix
+          for this task simplifies things and avoids adding dependencies to other
+          libraries (Boost.Phoenix
+          is already in use for Spirit
+          anyway).
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_lexertl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_statement</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_algorithm</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          To make all the code below more readable we introduce the following namespaces.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          To give a preview at what to expect from this example, here is the flex
+          program which has been used as the starting point. The useful code is directly
+          included inside the actions associated with each of the token definitions.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="special">%{</span>
+    <span class="keyword">int</span> <span class="identifier">c</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">w</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">l</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">%}</span>
+<span class="special">%%</span>
+<span class="special">[^</span> <span class="special">\</span><span class="identifier">t</span><span class="special">\</span><span class="identifier">n</span><span class="special">]+</span>  <span class="special">{</span> <span class="special">++</span><span class="identifier">w</span><span class="special">;</span> <span class="identifier">c</span> <span class="special">+=</span> <span class="identifier">yyleng</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">\</span><span class="identifier">n</span>         <span class="special">{</span> <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> <span class="special">++</span><span class="identifier">l</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">.</span>          <span class="special">{</span> <span class="special">++</span><span class="identifier">c</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">%%</span>
+<span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="identifier">yylex</span><span class="special">();</span>
+    <span class="identifier">printf</span><span class="special">(</span><span class="string">"%d %d %d\n"</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_"></a><h6>
+<a name="id855166"></a>
+          <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_">Semantic
+          Actions in <span class="emphasis"><em>Spirit.Lex</em></span></a>
+        </h6>
+<p>
+          <span class="emphasis"><em>Spirit.Lex</em></span> uses a very similar way of associating
+          actions with the token definitions (which should look familiar to anybody
+          knowlegdeable with Spirit
+          as well): specifying the operations to execute inside of a pair of <code class="computeroutput"><span class="special">[]</span></code> brackets. In order to be able to attach
+          semantic actions to token definitions for each of them there is defined
+          an instance of a <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code>.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_tokens</span> <span class="special">:</span> <span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">word_count_tokens</span><span class="special">()</span>
+      <span class="special">:</span> <span class="identifier">c</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">w</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">l</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="string">"[^ \t\n]+"</span><span class="special">)</span>     <span class="comment">// define tokens
+</span>      <span class="special">,</span> <span class="identifier">eol</span><span class="special">(</span><span class="string">"\n"</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">any</span><span class="special">(</span><span class="string">"."</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">_start</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">_end</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+
+        <span class="comment">// associate tokens with the lexer
+</span>        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span> 
+            <span class="special">=</span>   <span class="identifier">word</span>  <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">_start</span><span class="special">,</span> <span class="identifier">_end</span><span class="special">)]</span>
+            <span class="special">|</span>   <span class="identifier">eol</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)]</span> 
+            <span class="special">|</span>   <span class="identifier">any</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)]</span>
+            <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">l</span><span class="special">;</span>
+    <span class="identifier">token_def</span><span class="special"><></span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">eol</span><span class="special">,</span> <span class="identifier">any</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The semantics of the shown code is as follows. The code inside the <code class="computeroutput"><span class="special">[]</span></code> brackets will be executed whenever the
+          corresponding token has been matched by the lexical analyzer. This is very
+          similar to Flex, where
+          the action code associated with a token definition gets executed after
+          the recognition of a matching input sequence. The code above uses function
+          objects constructed using Boost.Phoenix,
+          but it is possible to insert any C++ function or function object as long
+          as it exposes the proper interface. For more details on please refer to
+          the section <a class="link" href="../abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer
+          Semantic Actions</a>.
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer"></a><h6>
+<a name="id855784"></a>
+          <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer">Associating
+          Token Definitions with the Lexer</a>
+        </h6>
+<p>
+          If you compare this code to the code from <a class="link" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">Lex
+          Quickstart 1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+          with regard to the way how token definitions are associated with the lexer,
+          you will notice a different syntax being used here. In the previous example
+          we have been using the <code class="computeroutput"><span class="identifier">self</span><span class="special">.</span><span class="identifier">add</span><span class="special">()</span></code> style of the API, while we here directly
+          assign the token definitions to <code class="computeroutput"><span class="identifier">self</span></code>,
+          combining the different token definitions using the <code class="computeroutput"><span class="special">|</span></code>
+          operator. Here is the code snippet again:
+        </p>
+<pre class="programlisting"><span class="identifier">self</span> <span class="special">=</span>  <span class="identifier">word</span>  <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">distance</span><span class="special">(</span><span class="identifier">_1</span><span class="special">)]</span>
+    <span class="special">|</span>   <span class="identifier">eol</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)]</span> 
+    <span class="special">|</span>   <span class="identifier">any</span>   <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)]</span>
+    <span class="special">;</span>
+</pre>
+<p>
+          This way we have a very powerful and natural way of building the lexical
+          analyzer. If translated into English this may be read as: The lexical analyer
+          will recognize ('<code class="computeroutput"><span class="special">=</span></code>') tokens
+          as defined by any of ('<code class="computeroutput"><span class="special">|</span></code>')
+          the token definitions <code class="computeroutput"><span class="identifier">word</span></code>,
+          <code class="computeroutput"><span class="identifier">eol</span></code>, and <code class="computeroutput"><span class="identifier">any</span></code>.
+        </p>
+<p>
+          A second difference to the previous example is that we do not explicitly
+          specify any token ids to use for the separate tokens. Using semantic actions
+          to trigger some useful work has freed us from the need to define those.
+          To ensure every token gets assigned a id the <span class="emphasis"><em>Spirit.Lex</em></span>
+          library internally assigns unique numbers to the token definitions, starting
+          with the constant defined by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">min_token_id</span></code>.
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together"></a><h6>
+<a name="id856072"></a>
+          <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together">Pulling
+          everything together</a>
+        </h6>
+<p>
+          In order to execute the code defined above we still need to instantiate
+          an instance of the lexer type, feed it from some input sequence and create
+          a pair of iterators allowing to iterate over the token sequence as created
+          by the lexer. This code shows how to achieve these steps:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+
+<span class="callout_bug"><a class="co" name="spirit8co" href="lexer_quickstart2.html#spirit8"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a></span>  <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">token</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> <span class="identifier">lex</span><span class="special">::</span><span class="identifier">omit</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span> <span class="identifier">token_type</span><span class="special">;</span>
+
+<span class="callout_bug"><a class="co" name="spirit9co" href="lexer_quickstart2.html#spirit9"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a></span>  <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">actor_lexer</span><span class="special"><</span><span class="identifier">token_type</span><span class="special">></span> <span class="identifier">lexer_type</span><span class="special">;</span>
+
+<span class="callout_bug"><a class="co" name="spirit10co" href="lexer_quickstart2.html#spirit10"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a></span>  <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">></span> <span class="identifier">word_count_lexer</span><span class="special">;</span>
+
+<span class="callout_bug"><a class="co" name="spirit11co" href="lexer_quickstart2.html#spirit11"><img src="../../../../../../../doc/src/images/callouts/4.png" alt="4" border="0"></a></span>  <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">();</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">last</span> <span class="special">=</span> <span class="special">&</span><span class="identifier">first</span><span class="special">[</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">()];</span>
+
+<span class="callout_bug"><a class="co" name="spirit12co" href="lexer_quickstart2.html#spirit12"><img src="../../../../../../../doc/src/images/callouts/5.png" alt="5" border="0"></a></span>  <span class="identifier">lexer_type</span><span class="special">::</span><span class="identifier">iterator_type</span> <span class="identifier">iter</span> <span class="special">=</span> <span class="identifier">word_count_lexer</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+    <span class="identifier">lexer_type</span><span class="special">::</span><span class="identifier">iterator_type</span> <span class="identifier">end</span> <span class="special">=</span> <span class="identifier">word_count_lexer</span><span class="special">.</span><span class="identifier">end</span><span class="special">();</span>
+
+<span class="callout_bug"><a class="co" name="spirit13co" href="lexer_quickstart2.html#spirit13"><img src="../../../../../../../doc/src/images/callouts/6.png" alt="6" border="0"></a></span>  <span class="keyword">while</span> <span class="special">(</span><span class="identifier">iter</span> <span class="special">!=</span> <span class="identifier">end</span> <span class="special">&&</span> <span class="identifier">token_is_valid</span><span class="special">(*</span><span class="identifier">iter</span><span class="special">))</span>
+        <span class="special">++</span><span class="identifier">iter</span><span class="special">;</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">iter</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"lines: "</span> <span class="special"><<</span> <span class="identifier">word_count_lexer</span><span class="special">.</span><span class="identifier">l</span> 
+                  <span class="special"><<</span> <span class="string">", words: "</span> <span class="special"><<</span> <span class="identifier">word_count_lexer</span><span class="special">.</span><span class="identifier">w</span> 
+                  <span class="special"><<</span> <span class="string">", characters: "</span> <span class="special"><<</span> <span class="identifier">word_count_lexer</span><span class="special">.</span><span class="identifier">c</span> 
+                  <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">else</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Lexical analysis failed\n"</span> <span class="special"><<</span> <span class="string">"stopped at: \""</span> 
+                  <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+          </p>
+<p>
+            </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit8"></a>
 </p></td>
+<td valign="top" align="left"><p>  Specifying <code class="computeroutput"><span class="identifier">omit</span></code> as the
+            token attribute type generates a token class not holding any token attribute
+            at all (not even the iterator range of the matched input sequence), therefore
+            optimizing the token, the lexer, and possibly the parser implementation
+            as much as possible. Specifying <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+            as the 3rd template parameter generates a token type and an iterator,
+            both holding no lexer state, allowing for even more aggressive optimizations.
+            As a result the token instances contain the token ids as the only data
+            member. </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit9"></a>
 </p></td>
+<td valign="top" align="left"><p>  This defines the lexer type to use </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit10"></a>
 </p></td>
+<td valign="top" align="left"><p>  Create the lexer object instance
+            needed to invoke the lexical analysis </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit11"></a>
 </p></td>
+<td valign="top" align="left"><p>  Read input from the given file,
+            tokenize all the input, while discarding all generated tokens </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit12"></a>
 </p></td>
+<td valign="top" align="left"><p>  Create
+            a pair of iterators returning the sequence of generated tokens </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit13"></a>
 </p></td>
+<td valign="top" align="left"><p>  Here we
+            simply iterate over all tokens, making sure to break the loop if an invalid
+            token gets returned from the lexer </p></td>
+</tr>
+</table></div>
+<p>
+          </p>
+<p>
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_quickstart1.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart3.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,427 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quickstart 3 - Counting Words Using a Parser</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Spirit.Lex Tutorials">
+<link rel="prev" href="lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">
+<link rel="next" href="../abstracts.html" title="Abstracts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_quickstart2.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../abstracts.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quickstart 3 - Counting Words Using a Parser">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.tutorials.lexer_quickstart3"></a><a class="link" href="lexer_quickstart3.html" title="Quickstart 3 - Counting Words Using a Parser"> Quickstart
+        3 - Counting Words Using a Parser</a>
+</h4></div></div></div>
+<p>
+          The whole purpose of integrating <span class="emphasis"><em>Spirit.Lex</em></span> as part
+          of the Spirit library
+          was to add a library allowing to merge lexical analysis with the parsing
+          process as defined by a Spirit
+          grammar. Spirit parsers
+          read their input from an input sequence accessed by iterators. So naturally,
+          we chose iterators to be used as the interface beween the lexer and the
+          parser. A second goal of the lexer/parser integration was to enable the
+          usage of possibly different lexical analyzer libraries. The utilization
+          of iterators seemed to be the right choice from this standpoint as well,
+          mainly because these can be used as an abstraction layer hiding implementation
+          specifics of the used lexer library. The <a class="link" href="lexer_quickstart3.html#spirit.lex.flowcontrol" title="Figure 7. The common flow control implemented while parsing combined with lexical analysis">picture</a>
+          below shows the common flow control implemented while parsing combined
+          with lexical analysis.
+        </p>
+<p>
+          </p>
+<div class="figure">
+<a name="spirit.lex.flowcontrol"></a><p class="title"><b>Figure 7. The common flow control implemented while parsing
+          combined with lexical analysis</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../.././images/flowofcontrol.png" alt="The common flow control implemented while parsing combined with lexical analysis"></span></div>
+</div>
+<p><br class="figure-break">
+        </p>
+<p>
+          Another problem related to the integration of the lexical analyzer with
+          the parser was to find a way how the defined tokens syntactically could
+          be blended with the grammar definition syntax of Spirit.
+          For tokens defined as instances of the <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code> class the most natural way of integration
+          was to allow to directly use these as parser components. Semantically these
+          parser components succeed matching their input whenever the corresponding
+          token type has been matched by the lexer. This quick start example will
+          demonstrate this (and more) by counting words again, simply by adding up
+          the numbers inside of semantic actions of a parser (for the full example
+          code see here: word_count.cpp).
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart3.prerequisites"></a><h6>
+<a name="id857053"></a>
+          <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.prerequisites">Prerequisites</a>
+        </h6>
+<p>
+          This example uses two of the Spirit
+          library components: <span class="emphasis"><em>Spirit.Lex</em></span> and <span class="emphasis"><em>Spirit.Qi</em></span>,
+          consequently we have to <code class="computeroutput"><span class="preprocessor">#include</span></code>
+          the corresponding header files. Again, we need to include a couple of header
+          files from the Boost.Phoenix
+          library. This example shows how to attach functors to parser components,
+          which could be done using any type of C++ technique resulting in a callable
+          object. Using Boost.Phoenix
+          for this task simplifies things and avoids adding dependencies to other
+          libraries (Boost.Phoenix
+          is already in use for Spirit
+          anyway).
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">lex_lexertl</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_statement</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          To make all the code below more readable we introduce the following namespaces.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart3.defining_tokens"></a><h6>
+<a name="id859293"></a>
+          <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.defining_tokens">Defining
+          Tokens</a>
+        </h6>
+<p>
+          If compared to the two previous quick start examples (<a class="link" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">Lex
+          Quickstart 1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+          and <a class="link" href="lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">Lex Quickstart
+          2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>)
+          the token definition class for this example does not reveal any surprises.
+          However, it uses lexer token definition macros to simplify the composition
+          of the regular expressions, which will be described in more detail in the
+          section <span class="bold"><strong>FIXME</strong></span>. Generally, any token definition
+          is usable without modification either for a standalone lexical analyzer
+          or in conjunction with a parser.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_tokens</span> <span class="special">:</span> <span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">word_count_tokens</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="comment">// define patterns (lexer macros) to be used during token definition 
+</span>        <span class="comment">// below
+</span>        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span><span class="special">.</span><span class="identifier">add_pattern</span>
+            <span class="special">(</span><span class="string">"WORD"</span><span class="special">,</span> <span class="string">"[^ \t\n]+"</span><span class="special">)</span>
+        <span class="special">;</span>
+
+        <span class="comment">// define tokens and associate them with the lexer
+</span>        <span class="identifier">word</span> <span class="special">=</span> <span class="string">"{WORD}"</span><span class="special">;</span>    <span class="comment">// reference the pattern 'WORD' as defined above
+</span>
+        <span class="comment">// this lexer will recognize 3 token types: words, newlines, and 
+</span>        <span class="comment">// everything else
+</span>        <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span><span class="special">.</span><span class="identifier">add</span>
+            <span class="special">(</span><span class="identifier">word</span><span class="special">)</span>          <span class="comment">// no token id is needed here
+</span>            <span class="special">(</span><span class="char">'\n'</span><span class="special">)</span>          <span class="comment">// characters are usable as tokens as well
+</span>            <span class="special">(</span><span class="string">"."</span><span class="special">,</span> <span class="identifier">IDANY</span><span class="special">)</span>    <span class="comment">// string literals will not be esacped by the library
+</span>        <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="comment">// the token 'word' exposes the matched string as its parser attribute
+</span>    <span class="identifier">token_def</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">word</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers"></a><h6>
+<a name="id859630"></a>
+          <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers">Using
+          Token Definition Instances as Parsers</a>
+        </h6>
+<p>
+          While the integration of lexer and parser in the control flow is achieved
+          by using special iterators wrapping the lexical analyzer, we still nead
+          a means of expressing in the grammar what tokens to match and where. The
+          token definition class above uses three different ways of defining a token:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Using an instance of a <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code>, which is handy whenever you
+            need to specify a token attribute (for more information about lexer related
+            attributes please look here: <a class="link" href="../abstracts/lexer_attributes.html" title="Lexer Attributes">Lexer
+            Attributes</a>).
+          </li>
+<li class="listitem">
+            Using a single character as the token, in this case the character represents
+            itself as a token, where the token id is the ASCII character value.
+          </li>
+<li class="listitem">
+            Using a regular expression represented as a string, where the token id
+            needs to be specified explicitly to make the token accessible from the
+            grammar level.
+          </li>
+</ul></div>
+<p>
+          All three token definition methods require a different method of grammar
+          integration. But as you can see from the following code snippet, each of
+          this methods is straightforward and blends the corresponding token instance
+          naturally with the surrounding <span class="emphasis"><em>Spirit.Qi</em></span> grammar syntax.
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Token definition
+                </p>
+                </th>
+<th>
+                <p>
+                  Parser integration
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  The <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code>
+                  instance is directly usable as a parser component. Parsing of this
+                  component will succeed if the regular expression used to define
+                  this has been matched successfully.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  single character
+                </p>
+                </td>
+<td>
+                <p>
+                  The single character is directly usable in the grammar, under certain
+                  circumstances it needs to be wrapped by a <code class="computeroutput"><span class="identifier">char_</span><span class="special">()</span></code> parser component, though. Parsing
+                  of this component will succeed if the single character has been
+                  matched.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  explicit token id
+                </p>
+                </td>
+<td>
+                <p>
+                  To use an explicit token id in a <span class="emphasis"><em>Spirit.Qi</em></span>
+                  grammar you are required to wrap it with the special <code class="computeroutput"><span class="identifier">token</span><span class="special">()</span></code>
+                  parser component. Parsing of this component will succeed if the
+                  current token has the same token id as specified in the expression
+                  <code class="computeroutput"><span class="identifier">token</span><span class="special">(<</span><span class="identifier">id</span><span class="special">>)</span></code>.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+          The grammar definition below uses each of the three types demonstrating
+          their usage.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">word_count_grammar</span> <span class="special">:</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">TokenDef</span><span class="special">></span>
+    <span class="identifier">word_count_grammar</span><span class="special">(</span><span class="identifier">TokenDef</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">tok</span><span class="special">)</span>
+      <span class="special">:</span> <span class="identifier">word_count_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">)</span>
+      <span class="special">,</span> <span class="identifier">c</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">w</span><span class="special">(</span><span class="number">0</span><span class="special">),</span> <span class="identifier">l</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">size</span><span class="special">;</span>
+
+        <span class="identifier">start</span> <span class="special">=</span>  <span class="special">*(</span>   <span class="identifier">tok</span><span class="special">.</span><span class="identifier">word</span>      <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">w</span><span class="special">),</span> <span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">size</span><span class="special">(</span><span class="identifier">_1</span><span class="special">)]</span>
+                  <span class="special">|</span>   <span class="identifier">lit</span><span class="special">(</span><span class="char">'\n'</span><span class="special">)</span>     <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">),</span> <span class="special">++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">l</span><span class="special">)]</span> 
+                  <span class="special">|</span>   <span class="identifier">token</span><span class="special">(</span><span class="identifier">IDANY</span><span class="special">)</span>  <span class="special">[++</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)]</span>
+                  <span class="special">)</span>
+              <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">w</span><span class="special">,</span> <span class="identifier">l</span><span class="special">;</span>
+    <span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          As already described (see: <a class="link" href="../../../">Attributes</a>),
+          the <span class="emphasis"><em>Spirit.Qi</em></span> parser library builds upon a set of
+          of fully attributed parser components. Consequently, all the token definitions
+          do support the this attribute model as well. The most natural way of implementing
+          this was to use the token values as the attributes exposed by the parser
+          component corresponding to the token definition (you can read more about
+          this topic here: <a class="link" href="../abstracts/lexer_primitives/lexer_token_values.html" title="About Tokens and Token Values">About
+          Tokens and Token Values</a>). The example above takes advantage of the
+          full integration of the token values as the <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><></span></code>'s parser attributes: the <code class="computeroutput"><span class="identifier">word</span></code> token definition is declared as
+          a <code class="computeroutput"><span class="identifier">token_def</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span></code>,
+          making every instance of a <code class="computeroutput"><span class="identifier">word</span></code>
+          token carry the string representation of the matched input sequence as
+          its value. The semantic action attached to <code class="computeroutput"><span class="identifier">tok</span><span class="special">.</span><span class="identifier">word</span></code>
+          receives this string (represented by the <code class="computeroutput"><span class="identifier">_1</span></code>
+          placeholder) and uses it to calculate the number of matched characters:
+          <code class="computeroutput"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">+=</span>
+          <span class="identifier">size</span><span class="special">(</span><span class="identifier">_1</span><span class="special">)</span></code>.
+        </p>
+<a name="spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together"></a><h6>
+<a name="id860483"></a>
+          <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together">Pulling
+          Everything Together</a>
+        </h6>
+<p>
+          The main function needs to implement a bit more logic now as we have to
+          initialize and start not only the lexical analysis but the parsing process
+          as well. The three type definitions (<code class="computeroutput"><span class="keyword">typedef</span></code>
+          statements) simplify the creation of the lexical analyzer and the grammar.
+          After reading the contents of the given file into memory it calls the function
+          <a class="link" href="../../../"><code class="computeroutput"><span class="identifier">tokenize_and_parse</span><span class="special">()</span></code></a>
+          to initialize the lexical analysis and parsing processes.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">argc</span><span class="special">,</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">argv</span><span class="special">[])</span>
+<span class="special">{</span>
+<span class="callout_bug"><a class="co" name="spirit14co" href="lexer_quickstart3.html#spirit14"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a></span>  <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">token</span><span class="special"><</span>
+        <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span>
+    <span class="special">></span> <span class="identifier">token_type</span><span class="special">;</span>
+
+<span class="callout_bug"><a class="co" name="spirit15co" href="lexer_quickstart3.html#spirit15"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a></span>  <span class="keyword">typedef</span> <span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><</span><span class="identifier">token_type</span><span class="special">></span> <span class="identifier">lexer_type</span><span class="special">;</span>
+
+<span class="callout_bug"><a class="co" name="spirit16co" href="lexer_quickstart3.html#spirit16"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a></span>  <span class="keyword">typedef</span> <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">>::</span><span class="identifier">iterator_type</span> <span class="identifier">iterator_type</span><span class="special">;</span>
+
+    <span class="comment">// now we use the types defined above to create the lexer and grammar
+</span>    <span class="comment">// object instances needed to invoke the parsing process
+</span>    <span class="identifier">word_count_tokens</span><span class="special"><</span><span class="identifier">lexer_type</span><span class="special">></span> <span class="identifier">word_count</span><span class="special">;</span>          <span class="comment">// Our lexer
+</span>    <span class="identifier">word_count_grammar</span><span class="special"><</span><span class="identifier">iterator_type</span><span class="special">></span> <span class="identifier">g</span> <span class="special">(</span><span class="identifier">word_count</span><span class="special">);</span>  <span class="comment">// Our parser 
+</span>
+    <span class="comment">// read in the file int memory
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span> <span class="special">(</span><span class="identifier">read_from_file</span><span class="special">(</span><span class="number">1</span> <span class="special">==</span> <span class="identifier">argc</span> <span class="special">?</span> <span class="string">"word_count.input"</span> <span class="special">:</span> <span class="identifier">argv</span><span class="special">[</span><span class="number">1</span><span class="special">]));</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">c_str</span><span class="special">();</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">last</span> <span class="special">=</span> <span class="special">&</span><span class="identifier">first</span><span class="special">[</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">size</span><span class="special">()];</span>
+
+<span class="callout_bug"><a class="co" name="spirit17co" href="lexer_quickstart3.html#spirit17"><img src="../../../../../../../doc/src/images/callouts/4.png" alt="4" border="0"></a></span>  <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">tokenize_and_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">word_count</span><span class="special">,</span> <span class="identifier">g</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">r</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"lines: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">l</span> <span class="special"><<</span> <span class="string">", words: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">w</span> 
+                  <span class="special"><<</span> <span class="string">", characters: "</span> <span class="special"><<</span> <span class="identifier">g</span><span class="special">.</span><span class="identifier">c</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">else</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">);</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cerr</span> <span class="special"><<</span> <span class="string">"Parsing failed\n"</span> <span class="special"><<</span> <span class="string">"stopped at: \""</span> 
+                  <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="special">}</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+          </p>
+<p>
+            </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit14"></a>
 </p></td>
+<td valign="top" align="left"><p>  Define the token type to be used: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+            is available as the type of the token attribute </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit15"></a>
 </p></td>
+<td valign="top" align="left"><p>  Define the lexer type
+            to use implementing the state machine </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit16"></a>
 </p></td>
+<td valign="top" align="left"><p>  Define the iterator type exposed
+            by the lexer type </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit17"></a>
 </p></td>
+<td valign="top" align="left"><p>  Parsing is done based on the the token stream, not
+            the character stream read from the input. The function <code class="computeroutput"><span class="identifier">tokenize_and_parse</span><span class="special">()</span></code>
+            wraps the passed iterator range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span></code>
+            by the lexical analyzer and uses its exposed iterators to parse the toke
+            stream. </p></td>
+</tr>
+</table></div>
+<p>
+          </p>
+<p>
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexer_quickstart2.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../abstracts.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Spirit.Lex Tutorials Overview</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Spirit.Lex Tutorials">
+<link rel="prev" href="../tutorials.html" title="Spirit.Lex Tutorials">
+<link rel="next" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart1.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Spirit.Lex Tutorials Overview">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.lex.tutorials.lexer_tutorials"></a><a class="link" href="lexer_tutorials.html" title="Spirit.Lex Tutorials Overview"> <span class="emphasis"><em>Spirit.Lex</em></span>
+        Tutorials Overview</a>
+</h4></div></div></div>
+<p>
+          The <span class="emphasis"><em>Spirit.Lex</em></span> library implements several components
+          on top of possibly different lexer generator libraries. It exposes a pair
+          of iterators, which, when dereferenced, return a stream of tokens generated
+          from the underlying character stream. The generated tokens are based on
+          the token definitions supplied by the user.
+        </p>
+<p>
+          Currently, <span class="emphasis"><em>Spirit.Lex</em></span> is built on top of Ben Hansons
+          excellent Lexertl
+          library (which is a proposed Boost library). Lexertl
+          provides the necessary functionality to build state machines based on a
+          set of supplied regular expressions. But <span class="emphasis"><em>Spirit.Lex</em></span>
+          is not restricted to be used with Lexertl.
+          We expect it to be usable in conjunction with any other lexical scanner
+          generator library, all what needs to be implemented is a set of wrapper
+          objects exposing a well defined interface as described in this documentation.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            For the sake of clarity all examples in this documentation assume <span class="emphasis"><em>Spirit.Lex</em></span>
+            to be used on top of Lexertl.
+          </p></td></tr>
+</table></div>
+<p>
+          Building a lexer using <span class="emphasis"><em>Spirit.Lex</em></span> is highly configurable,
+          where most of this configuration has to be done at compile time. Almost
+          all of the configurable parameters have generally useful default values,
+          though, which means that starting a project is easy and straightforward.
+          Here is a (non-complete) list of features you can tweak to adjust the generated
+          lexer instance to the actual needs:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Select and customize the token type to be generated by the lexer instance.
+          </li>
+<li class="listitem">
+            Select and customize the token value types the generated token instances
+            will be able to hold.
+          </li>
+<li class="listitem">
+            Select the iterator type of the underlying input stream, which will be
+            used as the source for the character stream to tokenize.
+          </li>
+<li class="listitem">
+            Customize the iterator type returned by the lexer to enable debug support,
+            special handling of certain input sequences, etc.
+          </li>
+<li class="listitem">
+            Select the <span class="emphasis"><em>dynamic</em></span> or the <span class="emphasis"><em>static</em></span>
+            runtime model for the lexical analyzer.
+          </li>
+</ul></div>
+<p>
+          Special care has been taken during the development of the library that
+          optimal code will be generated regardless of the configuration options
+          selected.
+        </p>
+<p>
+          The series of tutorial examples of this section will guide you through
+          some common use cases helping to understand the big picture. The first
+          two quick start examples (<a class="link" href="lexer_quickstart1.html" title="Quickstart 1 - A word counter using Spirit.Lex">Lex
+          Quickstart 1 - A word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>
+          and <a class="link" href="lexer_quickstart2.html" title="Quickstart 2 - A better word counter using Spirit.Lex">Lex Quickstart
+          2 - A better word counter using <span class="emphasis"><em>Spirit.Lex</em></span></a>)
+          introduce the <span class="emphasis"><em>Spirit.Lex</em></span> library while building two
+          standalone applications, not being connected to or depending on any other
+          part of Spirit. The
+          section <a class="link" href="lexer_quickstart3.html" title="Quickstart 3 - Counting Words Using a Parser">Lex Quickstart
+          3 - Counting Words Using a Parser</a> demonstrates how to use a lexer
+          in conjunction with a parser (where obviously the parser is built using
+          <span class="emphasis"><em>Spirit.Qi</em></span>).
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lexer_quickstart1.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/notes.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/notes.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,49 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Notes</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="faq.html" title="Spirit FAQ">
+<link rel="next" href="notes/porting_from_spirit_1_8_x.html" title="Porting from Spirit 1.8.x">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faq.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="notes/porting_from_spirit_1_8_x.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Notes">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.notes"></a><a class="link" href="notes.html" title="Notes">Notes</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="notes/porting_from_spirit_1_8_x.html">Porting from
+      Spirit 1.8.x</a></span></dt>
+<dt><span class="section">Style Guide</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="faq.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="notes/porting_from_spirit_1_8_x.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,680 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Porting from Spirit 1.8.x</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../notes.html" title="Notes">
+<link rel="prev" href="../notes.html" title="Notes">
+<link rel="next" href="style_guide.html" title="Style Guide">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../notes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../notes.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="style_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Porting from Spirit 1.8.x">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.notes.porting_from_spirit_1_8_x"></a><a class="link" href="porting_from_spirit_1_8_x.html" title="Porting from Spirit 1.8.x">Porting from
+      Spirit 1.8.x</a>
+</h3></div></div></div>
+<p>
+        The current version of Spirit
+        is a complete rewrite of earlier versions (we refer to earlier versions as
+        Spirit.Classic).
+        The parser generators are now only one part of the whole library. The parser
+        submodule of Spirit is
+        now called <span class="emphasis"><em>Spirit.Qi</em></span>. It is conceptually different and
+        exposes a completely different interface. Generally, there is no easy (or
+        automated) way of converting parsers written for Spirit.Classic
+        to <span class="emphasis"><em>Spirit.Qi</em></span>. Therefore this section can give only guidelines
+        on how to approach porting your older parsers to the current version of
+        Spirit.
+      </p>
+<a name="spirit.notes.porting_from_spirit_1_8_x.include_files"></a><h5>
+<a name="id891039"></a>
+        <a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.include_files">Include
+        Files</a>
+      </h5>
+<p>
+        The overall directory structure of the Spirit
+        directories is described in the section <a class="link" href="../structure/include.html" title="Include">Include
+        Structure</a> and the FAQ entry <a class="link" href="../faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">Header
+        Hell</a>. This should give you a good overview on how to find the needed
+        header files for your new parsers. Moreover, each section in the <a class="link" href="../qi/reference.html" title="Reference">Qi
+        Reference</a> lists the required include files needed for any particular
+        component.
+      </p>
+<p>
+        It is possible to tell from the name of a header file, what version it belongs
+        to. While all main include files for Spirit.Classic
+        have the string 'classic_' in their name, for instance:
+      </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">classic_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+        we named all main include files for <span class="emphasis"><em>Spirit.Qi</em></span> to have
+        the string 'qi_' as part of their name, for instance:
+      </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+        The following table gives a rough list of corresponding header file between
+        Spirit.Classic
+        and <span class="emphasis"><em>Spirit.Qi</em></span>, but this can be used as a starting point
+        only, as several components have either been moved to different submodules
+        or might not exist in the never version anymore. We list only include files
+        for the topmost submodules. For header files required for more lower level
+        components please refer to the corresponding reference documentation of this
+        component.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+              <p>
+                Include file in <span class="emphasis"><em>Spirit.Classic</em></span>
+              </p>
+              </th>
+<th>
+              <p>
+                Include file in <span class="emphasis"><em>Spirit.Qi</em></span>
+              </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_actor</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, use Boost.Phoenix
+                for writing semantic actions
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_attribute</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, use local variables for rules instead of closures, the primitives
+                parsers now directly support lazy parametrization
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_core</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">qi_core</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_debug</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">qi_debug</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_dynamic</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, use <span class="emphasis"><em>Spirit.Qi</em></span> predicates instead of if_p,
+                while_p, for_p (included by <code class="computeroutput"><span class="identifier">qi_core</span><span class="special">.</span><span class="identifier">hpp</span></code>),
+                the equivalent for lazy_p is now included by <code class="computeroutput"><span class="identifier">qi_auxiliary</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_error_handling</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, included in <code class="computeroutput"><span class="identifier">qi_core</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_meta</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_symbols</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, included in <code class="computeroutput"><span class="identifier">qi_core</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+</tr>
+<tr>
+<td>
+              <p>
+                <code class="computeroutput"><span class="identifier">classic_utility</span><span class="special">.</span><span class="identifier">hpp</span></code>
+              </p>
+              </td>
+<td>
+              <p>
+                none, not part of <span class="emphasis"><em>Spirit.Qi</em></span> anymore, these components
+                will be added over time to the Repository
+              </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.notes.porting_from_spirit_1_8_x.the_free_parse_functions"></a><h5>
+<a name="id891677"></a>
+        <a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.the_free_parse_functions">The
+        Free Parse Functions</a>
+      </h5>
+<p>
+        The free parse functions (i.e. the main parser API) has been changed. This
+        includes the names of the free functions as well as their interface. In
+        Spirit.Classic
+        all free functions were named <code class="computeroutput"><span class="identifier">parse</span></code>.
+        In <span class="emphasis"><em>Spirit.Qi</em></span> they are are named either <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span></code>
+        or <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span></code> depending on whether the parsing
+        should be done using a skipper (<code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span></code>)
+        or not (<code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span></code>). All free functions now return a
+        simple <code class="computeroutput"><span class="keyword">bool</span></code>. A returned <code class="computeroutput"><span class="keyword">true</span></code> means success (i.e. the parser has matched)
+        or <code class="computeroutput"><span class="keyword">false</span></code> (i.e. the parser either
+        didn't match). This is equivalent to the former old <code class="computeroutput"><span class="identifier">parse_info</span></code>
+        member <code class="computeroutput"><span class="identifier">hit</span></code>. <span class="emphasis"><em>Spirit.Qi</em></span>
+        doesn't support tracking of the matched input length anymore. The old <code class="computeroutput"><span class="identifier">parse_info</span></code> member <code class="computeroutput"><span class="identifier">full</span></code>
+        can be emulated by comparing the iterators after <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span></code>
+        returned.
+      </p>
+<p>
+        All code examples in this section assume the following include statements
+        and using directives to be inserted. For Spirit.Classic:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">classic</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix1</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostreams</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">classic</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        and for <span class="emphasis"><em>Spirit.Qi</em></span>:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostreams</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        The following similar examples should clearify the differences. First the
+        base example in Spirit.Classic:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">"1,1"</span><span class="special">);</span>
+<span class="identifier">parse_info</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span><span class="special">></span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">int_p</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">hit</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successful match!\n"</span><span class="special">;</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">full</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"full match!\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"stopped at: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">stop</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"matched length: "</span> <span class="special"><<</span> <span class="identifier">pi</span><span class="special">.</span><span class="identifier">length</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        And here is the equivalent piece of code using <span class="emphasis"><em>Spirit.Qi</em></span>:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">"1,1"</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+<span class="keyword">bool</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">it</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">int_</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">result</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successful match!\n"</span><span class="special">;</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">it</span> <span class="special">==</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"full match!\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"stopped at: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">it</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+
+<span class="comment">// seldomly needed: use std::distance to calculate the length of the match
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"matched length: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">it</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        The changes required for phrase parsing (i.e. parsing using a skipper) are
+        similar. Here is how phrase parsing works in Spirit.Classic:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">" 1, 1"</span><span class="special">);</span>
+<span class="identifier">parse_info</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span><span class="special">></span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">int_p</span><span class="special">,</span> <span class="identifier">space_p</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">hit</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successful match!\n"</span><span class="special">;</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">full</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"full match!\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"stopped at: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">stop</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"matched length: "</span> <span class="special"><<</span> <span class="identifier">pi</span><span class="special">.</span><span class="identifier">length</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        And here the equivalent example in <span class="emphasis"><em>Spirit.Qi</em></span>:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">" 1, 1"</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+<span class="keyword">bool</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">it</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">result</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successful match!\n"</span><span class="special">;</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">it</span> <span class="special">==</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"full match!\n"</span><span class="special">;</span>
+<span class="keyword">else</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"stopped at: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">it</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+
+<span class="comment">// seldomly needed: use std::distance to calculate the length of the match
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"matched length: "</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span><span class="special">(</span><span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">it</span><span class="special">)</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        Note, how character parsers are in a separate namespace (here <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span></code>) as <span class="emphasis"><em>Spirit.Qi</em></span>
+        now supports working with different character sets. See the section <a class="link" href="../qi/reference/basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+        Encoding Namespace</a> for more information.
+      </p>
+<a name="spirit.notes.porting_from_spirit_1_8_x.naming_conventions"></a><h5>
+<a name="id895991"></a>
+        <a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.naming_conventions">Naming
+        Conventions</a>
+      </h5>
+<p>
+        In Spirit.Classic
+        all parser primitives have suffixes appended to their names, encoding their
+        type: <code class="computeroutput"><span class="string">"_p"</span></code> for parsers,
+        <code class="computeroutput"><span class="string">"_a"</span></code> for lazy actions,
+        <code class="computeroutput"><span class="string">"_d"</span></code> for directives,
+        etc. In <span class="emphasis"><em>Spirit.Qi</em></span> we don't have anything similar. The
+        only suffixes are single underscore letters <code class="computeroutput"><span class="string">"_"</span></code>
+        applied where the name would otherwise conflict with a keyword or predefined
+        name (such as <code class="computeroutput"><span class="identifier">int_</span></code> for the
+        integer parser). Overall, most, if not all primitive parsers and directives
+        have been renamed. Please see the <a class="link" href="../qi/quick_reference.html" title="Quick Reference">Qi
+        Quick Reference</a> for an overview on the names for the different available
+        parser primitives, directives and operators.
+      </p>
+<a name="spirit.notes.porting_from_spirit_1_8_x.parser_attributes"></a><h5>
+<a name="id896063"></a>
+        <a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.parser_attributes">Parser
+        Attributes</a>
+      </h5>
+<p>
+        In Spirit.Classic
+        most of the parser primitives don't expose a specific attribute type. Most
+        parsers expose the pair of iterators pointing to the matched input sequence.
+        As in <span class="emphasis"><em>Spirit.Qi</em></span> all parsers expose a parser specific
+        attribute type it introduces a special directive <code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code> allowing to achieve a similar effect as
+        in Spirit.Classic.
+        The <code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code>
+        directive exposes the pair of iterators pointing to the matching sequence
+        of its embedded parser. Even if we very much encourage you to rewrite your
+        parsers to take advantage of the generates parser specific attributes, sometimes
+        it is helpful to get access to the underlying matched input sequence.
+      </p>
+<a name="spirit.notes.porting_from_spirit_1_8_x.grammars_and_rules"></a><h5>
+<a name="id896122"></a>
+        <a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.grammars_and_rules">Grammars
+        and Rules</a>
+      </h5>
+<p>
+        The <code class="computeroutput"><span class="identifier">grammar</span><span class="special"><></span></code>
+        and <code class="computeroutput"><span class="identifier">rule</span><span class="special"><></span></code>
+        types are of equal importance to <span class="emphasis"><em>Spirit.Qi</em></span> as they are
+        for Spirit.Classic.
+        Their main purpose is still the same: they allow to define non-terminals
+        and they are the main building blocks for more complex parsers. Nevertheless,
+        both types have been redesigned and their interfaces have changed. Let's
+        have a look at two examples first, we'll explain the differences afterwards.
+        Here is a simple grammar and its usage in Spirit.Classic:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">roman</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">roman</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">ScannerT</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">definition</span>
+    <span class="special">{</span>
+        <span class="identifier">definition</span><span class="special">(</span><span class="identifier">roman</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">self</span><span class="special">)</span>
+        <span class="special">{</span>
+            <span class="identifier">hundreds</span><span class="special">.</span><span class="identifier">add</span>
+                <span class="special">(</span><span class="string">"C"</span>  <span class="special">,</span> <span class="number">100</span><span class="special">)(</span><span class="string">"CC"</span>  <span class="special">,</span> <span class="number">200</span><span class="special">)(</span><span class="string">"CCC"</span>  <span class="special">,</span> <span class="number">300</span><span class="special">)(</span><span class="string">"CD"</span> <span class="special">,</span> <span class="number">400</span><span class="special">)(</span><span class="string">"D"</span> <span class="special">,</span> <span class="number">500</span><span class="special">)</span>
+                <span class="special">(</span><span class="string">"DC"</span> <span class="special">,</span> <span class="number">600</span><span class="special">)(</span><span class="string">"DCC"</span> <span class="special">,</span> <span class="number">700</span><span class="special">)(</span><span class="string">"DCCC"</span> <span class="special">,</span> <span class="number">800</span><span class="special">)(</span><span class="string">"CM"</span> <span class="special">,</span> <span class="number">900</span><span class="special">)</span> <span class="special">;</span>
+
+            <span class="identifier">tens</span><span class="special">.</span><span class="identifier">add</span>
+                <span class="special">(</span><span class="string">"X"</span>  <span class="special">,</span> <span class="number">10</span><span class="special">)(</span><span class="string">"XX"</span>  <span class="special">,</span> <span class="number">20</span><span class="special">)(</span><span class="string">"XXX"</span>  <span class="special">,</span> <span class="number">30</span><span class="special">)(</span><span class="string">"XL"</span> <span class="special">,</span> <span class="number">40</span><span class="special">)(</span><span class="string">"L"</span> <span class="special">,</span> <span class="number">50</span><span class="special">)</span>
+                <span class="special">(</span><span class="string">"LX"</span> <span class="special">,</span> <span class="number">60</span><span class="special">)(</span><span class="string">"LXX"</span> <span class="special">,</span> <span class="number">70</span><span class="special">)(</span><span class="string">"LXXX"</span> <span class="special">,</span> <span class="number">80</span><span class="special">)(</span><span class="string">"XC"</span> <span class="special">,</span> <span class="number">90</span><span class="special">)</span> <span class="special">;</span>
+
+            <span class="identifier">ones</span><span class="special">.</span><span class="identifier">add</span>
+                <span class="special">(</span><span class="string">"I"</span>  <span class="special">,</span> <span class="number">1</span><span class="special">)(</span><span class="string">"II"</span>  <span class="special">,</span> <span class="number">2</span><span class="special">)(</span><span class="string">"III"</span>  <span class="special">,</span> <span class="number">3</span><span class="special">)(</span><span class="string">"IV"</span> <span class="special">,</span> <span class="number">4</span><span class="special">)(</span><span class="string">"V"</span> <span class="special">,</span> <span class="number">5</span><span class="special">)</span>
+                <span class="special">(</span><span class="string">"VI"</span> <span class="special">,</span> <span class="number">6</span><span class="special">)(</span><span class="string">"VII"</span> <span class="special">,</span> <span class="number">7</span><span class="special">)(</span><span class="string">"VIII"</span> <span class="special">,</span> <span class="number">8</span><span class="special">)(</span><span class="string">"IX"</span> <span class="special">,</span> <span class="number">9</span><span class="special">)</span> <span class="special">;</span>
+
+            <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">eps_p</span>         <span class="special">[</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">r</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="number">0</span><span class="special">)]</span>
+                <span class="special">>></span>  <span class="special">(</span>  <span class="special">+</span><span class="identifier">ch_p</span><span class="special">(</span><span class="char">'M'</span><span class="special">)</span> <span class="special">[</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">r</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="number">1000</span><span class="special">)]</span>
+                    <span class="special">||</span>  <span class="identifier">hundreds</span>  <span class="special">[</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">r</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span>
+                    <span class="special">||</span>  <span class="identifier">tens</span>      <span class="special">[</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">r</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span>
+                    <span class="special">||</span>  <span class="identifier">ones</span>      <span class="special">[</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">var</span><span class="special">(</span><span class="identifier">self</span><span class="special">.</span><span class="identifier">r</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span> 
+                    <span class="special">)</span> <span class="special">;</span>
+        <span class="special">}</span>
+
+        <span class="identifier">rule</span><span class="special"><</span><span class="identifier">ScannerT</span><span class="special">></span> <span class="identifier">first</span><span class="special">;</span>
+        <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">hundreds</span><span class="special">;</span>
+        <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">tens</span><span class="special">;</span>
+        <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">ones</span><span class="special">;</span>
+
+        <span class="identifier">rule</span><span class="special"><</span><span class="identifier">ScannerT</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">start</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">first</span><span class="special">;</span> <span class="special">}</span>
+    <span class="special">};</span>
+
+    <span class="identifier">roman</span><span class="special">(</span><span class="keyword">unsigned</span><span class="special">&</span> <span class="identifier">r_</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">r_</span><span class="special">)</span> <span class="special">{}</span>
+    <span class="keyword">unsigned</span><span class="special">&</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">"MMIX"</span><span class="special">);</span>        <span class="comment">// MMIX == 2009
+</span><span class="keyword">unsigned</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">roman</span> <span class="identifier">r</span><span class="special">(</span><span class="identifier">value</span><span class="special">);</span>
+<span class="identifier">parse_info</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span><span class="special">></span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">r</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">pi</span><span class="special">.</span><span class="identifier">hit</span><span class="special">)</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successfully matched: "</span> <span class="special"><<</span> <span class="identifier">value</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        And here is a similar grammar and its usage in <span class="emphasis"><em>Spirit.Qi</em></span>:
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">roman</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span>
+<span class="special">{</span>
+    <span class="identifier">roman</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()>(</span><span class="identifier">first</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="identifier">hundreds</span><span class="special">.</span><span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"C"</span>  <span class="special">,</span> <span class="number">100</span><span class="special">)(</span><span class="string">"CC"</span>  <span class="special">,</span> <span class="number">200</span><span class="special">)(</span><span class="string">"CCC"</span>  <span class="special">,</span> <span class="number">300</span><span class="special">)(</span><span class="string">"CD"</span> <span class="special">,</span> <span class="number">400</span><span class="special">)(</span><span class="string">"D"</span> <span class="special">,</span> <span class="number">500</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"DC"</span> <span class="special">,</span> <span class="number">600</span><span class="special">)(</span><span class="string">"DCC"</span> <span class="special">,</span> <span class="number">700</span><span class="special">)(</span><span class="string">"DCCC"</span> <span class="special">,</span> <span class="number">800</span><span class="special">)(</span><span class="string">"CM"</span> <span class="special">,</span> <span class="number">900</span><span class="special">)</span> <span class="special">;</span>
+
+        <span class="identifier">tens</span><span class="special">.</span><span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"X"</span>  <span class="special">,</span> <span class="number">10</span><span class="special">)(</span><span class="string">"XX"</span>  <span class="special">,</span> <span class="number">20</span><span class="special">)(</span><span class="string">"XXX"</span>  <span class="special">,</span> <span class="number">30</span><span class="special">)(</span><span class="string">"XL"</span> <span class="special">,</span> <span class="number">40</span><span class="special">)(</span><span class="string">"L"</span> <span class="special">,</span> <span class="number">50</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"LX"</span> <span class="special">,</span> <span class="number">60</span><span class="special">)(</span><span class="string">"LXX"</span> <span class="special">,</span> <span class="number">70</span><span class="special">)(</span><span class="string">"LXXX"</span> <span class="special">,</span> <span class="number">80</span><span class="special">)(</span><span class="string">"XC"</span> <span class="special">,</span> <span class="number">90</span><span class="special">)</span> <span class="special">;</span>
+
+        <span class="identifier">ones</span><span class="special">.</span><span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"I"</span>  <span class="special">,</span> <span class="number">1</span><span class="special">)(</span><span class="string">"II"</span>  <span class="special">,</span> <span class="number">2</span><span class="special">)(</span><span class="string">"III"</span>  <span class="special">,</span> <span class="number">3</span><span class="special">)(</span><span class="string">"IV"</span> <span class="special">,</span> <span class="number">4</span><span class="special">)(</span><span class="string">"V"</span> <span class="special">,</span> <span class="number">5</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"VI"</span> <span class="special">,</span> <span class="number">6</span><span class="special">)(</span><span class="string">"VII"</span> <span class="special">,</span> <span class="number">7</span><span class="special">)(</span><span class="string">"VIII"</span> <span class="special">,</span> <span class="number">8</span><span class="special">)(</span><span class="string">"IX"</span> <span class="special">,</span> <span class="number">9</span><span class="special">)</span> <span class="special">;</span>
+
+        <span class="comment">// qi::_val refers to the attribute of the rule on the left hand side 
+</span>        <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">eps</span>          <span class="special">[</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span> <span class="special">=</span> <span class="number">0</span><span class="special">]</span> 
+            <span class="special">>></span>  <span class="special">(</span>  <span class="special">+</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'M'</span><span class="special">)</span> <span class="special">[</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="number">1000</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">hundreds</span> <span class="special">[</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">tens</span>     <span class="special">[</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">ones</span>     <span class="special">[</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">]</span>
+                <span class="special">)</span> <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span> <span class="identifier">first</span><span class="special">;</span>
+    <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">hundreds</span><span class="special">;</span>
+    <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">tens</span><span class="special">;</span>
+    <span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">ones</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+        </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">input</span><span class="special">(</span><span class="string">"MMIX"</span><span class="special">);</span>        <span class="comment">// MMIX == 2009
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">it</span> <span class="special">=</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">begin</span><span class="special">();</span>
+<span class="keyword">unsigned</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+<span class="identifier">roman</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">it</span><span class="special">,</span> <span class="identifier">input</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">r</span><span class="special">,</span> <span class="identifier">value</span><span class="special">))</span> 
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"successfully matched: "</span> <span class="special"><<</span> <span class="identifier">value</span> <span class="special"><<</span> <span class="string">"\n"</span><span class="special">;</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+        Both versions look similarily enough, but we see several differences (we
+        will cover each of those differences in more detail below):
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Neither the grammars nor the rules depend on a scanner type anymore, both
+          depend only on the underlying iterator type. That means the dreaded scanner
+          business is no issue anymore!
+        </li>
+<li class="listitem">
+          Grammars have no embedded class <code class="computeroutput"><span class="identifier">definition</span></code>
+          anymore
+        </li>
+<li class="listitem">
+          Grammars and rules may have an explicit attribute type specified in their
+          definition
+        </li>
+<li class="listitem">
+          Grammars do not have any explicit start rules anymore. Instead one of the
+          contained rules is used as a start rule by default.
+        </li>
+</ul></div>
+<p>
+        The first two points are tightly interrelated. The scanner business (see
+        the FAQ number one of Spirit.Classic
+        here: <a href="../../../../../../libs/spirit/classic/doc/faq.html#scanner_business" target="_top">The
+        Scanner Business</a>) has been a problem for a long time. The grammar
+        and rule types have been specifically redesigned to avoid this problem in
+        the future. This also means that we don't need any delayed instantiation
+        of the inner definition class in a grammar anymore. So the redesign not only
+        helped fixing a long standing design problem, it helped to simplify things
+        considerably.
+      </p>
+<p>
+        All <span class="emphasis"><em>Spirit.Qi</em></span> parser components have well defined attribute
+        types. Grammars and rules are no exception. But since both need to be generic
+        enough to be usable for any parser their attribute type has to be explicitly
+        specified. In the example above the <code class="computeroutput"><span class="identifier">roman</span></code>
+        grammar and the rule <code class="computeroutput"><span class="identifier">first</span></code>
+        both have an <code class="computeroutput"><span class="keyword">unsigned</span></code> attribute:
+      </p>
+<pre class="programlisting"><span class="comment">// grammar definition
+</span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">roman</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span> <span class="special">{...};</span>
+
+<span class="comment">// rule definition
+</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span> <span class="identifier">first</span><span class="special">;</span>
+</pre>
+<p>
+        The used notation resembles the definition of a function type. This is very
+        natural as you can think of the synthesized attribute of the grammar and
+        the rule as of its 'return value'. In fact the rule and the grammar both
+        'return' an unsigned value - the value they matched.
+      </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          The function type notation allows to specify parameters as well. These
+          are interpreted as the types of inherited attributes the rule or grammar
+          expect to be passed during parsing. For more information please see the
+          section about inherited and synthesized attributes for rules and grammars.
+        </p></td></tr>
+</table></div>
+<p>
+        If no attribute is desired none needs to be specified. The default attrribute
+        type for both, grammars and rules, is <code class="computeroutput"><span class="identifier">unused_type</span></code>,
+        which is a special placeholder type.
+      </p>
+<p>
+        The last difference might seem to be rather cosmetic and insignificant. But
+        it turns out that not having to specify which rule in a grammar is the start
+        rule (by returning it from the function <code class="computeroutput"><span class="identifier">start</span><span class="special">()</span></code>) also means that any rule in a grammar
+        can be directly used as the start rule. Nevertheless, the grammar base class
+        gets initialized with the rule it has to use as the start rule in case the
+        grammar instance is directly used as a parser.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../notes.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../notes.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="style_guide.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/notes/style_guide.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/notes/style_guide.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Style Guide</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../notes.html" title="Notes">
+<link rel="prev" href="porting_from_spirit_1_8_x.html" title="Porting from Spirit 1.8.x">
+<link rel="next" href="../repository.html" title="Spirit Repository">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="porting_from_spirit_1_8_x.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../notes.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../repository.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Style Guide">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.notes.style_guide"></a><a class="link" href="style_guide.html" title="Style Guide">Style Guide</a>
+</h3></div></div></div>
+<p>
+        At some point, especially when there are lots of semantic actions attached
+        to various points, the grammar tends to be quite difficult to follow. In
+        order to keep an easy-to-read, consistent en aesthetically pleasing look
+        to the Spirit code, the following coding styleguide is advised.
+      </p>
+<p>
+        This coding style is adapted and extended from the ANTLR/PCCTS style and
+        <a href="http://www.boost.org/development/requirements.html" target="_top">Boost Library
+        Requirements and Guidelines</a> and is the combined work of Joel de Guzman,
+        Chris Uzdavinis, and Hartmut Kaiser.
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Rule names use std C++ (Boost) convention. The rule name may be very long.
+        </li>
+<li class="listitem">
+          The '=' is neatly indented 4 spaces below. Like in Boost, use spaces instead
+          of tabs.
+        </li>
+<li class="listitem">
+          Breaking the operands into separate lines puts the semantic actions neatly
+          to the right.
+        </li>
+<li class="listitem">
+          Semicolon at the last line terminates the rule.
+        </li>
+<li class="listitem">
+          The adjacent parts of a sequence should be indented accordingly to have
+          all, what belongs to one level, at one indentation level.
+        </li>
+</ul></div>
+<pre class="programlisting"><span class="identifier">program</span>
+    <span class="special">=</span>   <span class="identifier">program_heading</span> <span class="special">[</span><span class="identifier">heading_action</span><span class="special">]</span>
+        <span class="special">>></span> <span class="identifier">block</span> <span class="special">[</span><span class="identifier">block_action</span><span class="special">]</span>
+        <span class="special">>></span> <span class="char">'.'</span>
+    <span class="special">|</span>   <span class="identifier">another_sequence</span>
+        <span class="special">>></span> <span class="identifier">etc</span>
+    <span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Prefer literals in the grammar instead of identifiers. e.g. <code class="computeroutput"><span class="string">"program"</span></code> instead of <code class="computeroutput"><span class="identifier">PROGRAM</span></code>, <code class="computeroutput"><span class="char">'>='</span></code>
+          instead of <code class="computeroutput"><span class="identifier">GTE</span></code> and <code class="computeroutput"><span class="char">'.'</span></code> instead of <code class="computeroutput"><span class="identifier">DOT</span></code>.
+          This makes it much easier to read. If this isn't possible (for instance
+          where the used tokens must be identified through integers) capitalized
+          identifiers should be used instead.
+        </li>
+<li class="listitem">
+          Breaking the operands may not be needed for short expressions. e.g. <code class="computeroutput"><span class="special">*(</span><span class="char">','</span> <span class="special">>></span>
+          <span class="identifier">file_identifier</span><span class="special">)</span></code>
+          as long as the line does not exceed 80 characters.
+        </li>
+<li class="listitem">
+          If a sequence fits on one line, put spaces inside the parentheses to clearly
+          separate them from the rules.
+        </li>
+</ul></div>
+<pre class="programlisting"><span class="identifier">program_heading</span>
+    <span class="special">=</span>   <span class="identifier">no_case</span><span class="special">[</span><span class="string">"program"</span><span class="special">]</span>
+        <span class="special">>></span> <span class="identifier">identifier</span>
+        <span class="special">>></span> <span class="char">'('</span>
+        <span class="special">>></span> <span class="identifier">file_identifier</span>
+        <span class="special">>></span> <span class="special">*(</span> <span class="char">','</span> <span class="special">>></span> <span class="identifier">file_identifier</span> <span class="special">)</span>
+        <span class="special">>></span> <span class="char">')'</span>
+        <span class="special">>></span> <span class="char">';'</span>
+    <span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+          Nesting directives: If a rule does not fit on one line (80 characters)
+          it should be continued on the next line intended by one level. The brackets
+          of directives, semantic expressions (using Phoenix or LL lambda expressions)
+          or parsers should be placed as follows.
+        </li></ul></div>
+<pre class="programlisting"><span class="identifier">identifier</span>
+    <span class="special">=</span>   <span class="identifier">no_case</span>
+        <span class="special">[</span>
+            <span class="identifier">lexeme</span>
+            <span class="special">[</span>
+                <span class="identifier">alpha</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">alnum</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">)</span> <span class="special">[</span><span class="identifier">id_action</span><span class="special">]</span>
+            <span class="special">]</span>
+        <span class="special">]</span>
+   <span class="special">;</span>
+</pre>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+          Nesting unary operators (e.g.Kleene star): Unary rule operators (Kleene
+          star, <code class="computeroutput"><span class="char">'!'</span></code>, <code class="computeroutput"><span class="char">'+'</span></code>
+          etc.) should be moved out one space before the corresponding indentation
+          level, if this rule has a body or a sequence after it, which does not fit
+          on on line. This makes the formatting more consistent and moves the rule
+          'body' at the same indentation level as the rule itself, highlighting the
+          unary operator.
+        </li></ul></div>
+<pre class="programlisting"><span class="identifier">block</span>
+   <span class="special">=</span>  <span class="special">*(</span>   <span class="identifier">label_declaration_part</span>
+       <span class="special">|</span>   <span class="identifier">constant_definition_part</span>
+       <span class="special">|</span>   <span class="identifier">type_definition_part</span>
+       <span class="special">|</span>   <span class="identifier">variable_declaration_part</span>
+       <span class="special">|</span>   <span class="identifier">procedure_and_function_declaration_part</span>
+       <span class="special">)</span>
+       <span class="special">>></span> <span class="identifier">statement_part</span>
+   <span class="special">;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="porting_from_spirit_1_8_x.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../notes.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../repository.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/preface.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/preface.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,377 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Preface</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="../index.html" title="Spirit 2.1">
+<link rel="next" href="what_s_new.html" title="What's New">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="what_s_new.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Preface">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.preface"></a><a class="link" href="preface.html" title="Preface">Preface</a>
+</h2></div></div></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+        </p>
+<p>
+          <span class="emphasis"><em><span class="quote">“<span class="quote">Examples of designs that meet most of the criteria for
+          "goodness" (easy to understand, flexible, efficient) are a recursive-descent
+          parser, which is traditional procedural code. Another example is the STL,
+          which is a generic library of containers and algorithms depending crucially
+          on both traditional procedural code and on parametric polymorphism.</span>”</span></em></span>
+          <span class="bold"><strong>--Bjarne Stroustrup</strong></span>
+        </p>
+<p>
+      </p>
+</blockquote></div>
+<a name="spirit.preface.history"></a><h4>
+<a name="id586015"></a>
+      <a class="link" href="preface.html#spirit.preface.history">History</a>
+    </h4>
+<a name="spirit.preface._emphasis_80s__emphasis_"></a><h4>
+<a name="id586028"></a>
+      <a class="link" href="preface.html#spirit.preface._emphasis_80s__emphasis_"><span class="emphasis"><em>80s</em></span></a>
+    </h4>
+<p>
+      In the mid-80s, Joel wrote his first calculator in Pascal. Such an unforgettable
+      coding experience, he was amazed at how a mutually recursive set of functions
+      can model a grammar specification. In time, the skills he acquired from that
+      academic experience became very practical as he was tasked to do some parsing.
+      For instance, whenever he needed to perform any form of binary or text I/O,
+      he tried to approach each task somewhat formally by writing a grammar using
+      Pascal-like syntax diagrams and then a corresponding recursive-descent parser.
+      This process worked very well.
+    </p>
+<a name="spirit.preface._emphasis_90s__emphasis_"></a><h4>
+<a name="id586046"></a>
+      <a class="link" href="preface.html#spirit.preface._emphasis_90s__emphasis_"><span class="emphasis"><em>90s</em></span></a>
+    </h4>
+<p>
+      The arrival of the Internet and the World Wide Web magnified the need for parsing
+      a thousand-fold. At one point Joel had to write an HTML parser for a Web browser
+      project. Using the W3C formal specifications, he easily wrote a recursive-descent
+      HTML parser. With the influence of the Internet, RFC specifications were abundent.
+      SGML, HTML, XML, email addresses and even those seemingly trivial URLs were
+      all formally specified using small EBNF-style grammar specifications. Joel
+      had more parsing to do, and he wished for a tool similar to larger parser generators
+      such as YACC and ANTLR, where a parser is built automatically from a grammar
+      specification.
+    </p>
+<p>
+      This ideal tool would be able to parse anything from email addresses and command
+      lines, to XML and scripting languages. Scalability was a primary goal. The
+      tool would be able to do this without incurring a heavy development load, which
+      was not possible with the above mentioned parser generators. The result was
+      Spirit.
+    </p>
+<p>
+      Spirit was a personal project that was conceived when Joel was involved in
+      R&D in Japan. Inspired by the GoF's composite and interpreter patterns,
+      he realized that he can model a recursive-descent parser with hierarchical-object
+      composition of primitives (terminals) and composites (productions). The original
+      version was implemented with run-time polymorphic classes. A parser was generated
+      at run time by feeding in production rule strings such as:
+    </p>
+<pre class="programlisting"><span class="string">"prod ::= {'A' | 'B'} 'C';"</span>
+</pre>
+<p>
+      A compile function compiled the parser, dynamically creating a hierarchy of
+      objects and linking semantic actions on the fly. A very early text can be found
+      here: pre-Spirit.
+    </p>
+<a name="spirit.preface._emphasis_2001_to_2006__emphasis_"></a><h4>
+<a name="id586088"></a>
+      <a class="link" href="preface.html#spirit.preface._emphasis_2001_to_2006__emphasis_"><span class="emphasis"><em>2001
+      to 2006</em></span></a>
+    </h4>
+<p>
+      Version 1.0 to 1.8 was a complete rewrite of the original Spirit parser using
+      expression templates and static polymorphism, inspired by the works of Todd
+      Veldhuizen (<a href="http://ubiety.uwaterloo.ca/~tveldhui/papers/Expression-Templates/exprtmpl.html" target="_top">Expression
+      Templates</a>, C++ Report, June 1995). Initially, the static-Spirit version
+      was meant only to replace the core of the original dynamic-Spirit. Dynamic-Spirit
+      needed a parser to implement itself anyway. The original employed a hand-coded
+      recursive-descent parser to parse the input grammar specification strings.
+      It was at this time when Hartmut Kaiser joined the Spirit development.
+    </p>
+<p>
+      After its initial "open-source" debut in May 2001, static-Spirit
+      became a success. At around November 2001, the Spirit website had an activity
+      percentile of 98%, making it the number one parser tool at Source Forge at
+      the time. Not bad for a niche project like a parser library. The "static"
+      portion of Spirit was forgotten and static-Spirit simply became Spirit. The
+      library soon evolved to acquire more dynamic features.
+    </p>
+<p>
+      Spirit was formally accepted into Boost
+      in October 2002. Boost is a peer-reviewed, open collaborative development effort
+      around a collection of free Open Source C++ libraries covering a wide range
+      of domains. The Boost Libraries have become widely known as an industry standard
+      for design and implementation quality, robustness, and reusability.
+    </p>
+<a name="spirit.preface._emphasis_2007__emphasis_"></a><h4>
+<a name="id586123"></a>
+      <a class="link" href="preface.html#spirit.preface._emphasis_2007__emphasis_"><span class="emphasis"><em>2007</em></span></a>
+    </h4>
+<p>
+      Over the years, especially after Spirit was accepted into Boost, Spirit has
+      served its purpose quite admirably. <span class="bold"><strong><span class="emphasis"><em>Classic-Spirit</em></span></strong></span>
+      (versions prior to 2.0) focused on transduction parsing, where the input string
+      is merely translated to an output string. Many parsers fall into the transduction
+      type. When the time came to add attributes to the parser library, it was done
+      in a rather ad-hoc manner, with the goal being 100% backward compatible with
+      Classic Spirit. As a result, some parsers have attributes, some don't.
+    </p>
+<p>
+      Spirit V2 is another major rewrite. Spirit V2 grammars are fully attributed
+      (see <a href="http://en.wikipedia.org/wiki/Attribute_grammar" target="_top">Attribute
+      Grammar</a>) which means that all parser components have attributes. To
+      do this efficiently and elegantly, we had to use a couple of infrastructure
+      libraries. Some did not exist, some were quite new when Spirit debuted, and
+      some needed work. Boost.Mpl
+      is an important infrastructure library, yet is not sufficient to implement
+      Spirit V2. Another library had to be written: Boost.Fusion.
+      Fusion sits between MPL and STL --between compile time and runtime -- mapping
+      types to values. Fusion is a direct descendant of both MPL and Boost.Tuples.
+      Fusion is now a full-fledged Boost
+      library. Phoenix also
+      had to be beefed up to support Spirit V2. The result is Boost.Phoenix.
+      Last but not least, Spirit V2 uses an <a href="http://ubiety.uwaterloo.ca/~tveldhui/papers/Expression-Templates/exprtmpl.html" target="_top">Expression
+      Templates</a> library called Boost.Proto.
+    </p>
+<p>
+      Even though it has evolved and matured to become a multi-module library, Spirit
+      is still used for micro-parsing tasks as well as scripting languages. Like
+      C++, you only pay for features that you need. The power of Spirit comes from
+      its modularity and extensibility. Instead of giving you a sledgehammer, it
+      gives you the right ingredients to easily create a sledgehammer.
+    </p>
+<a name="spirit.preface.new_ideas__spirit_v2"></a><h4>
+<a name="id586198"></a>
+      <a class="link" href="preface.html#spirit.preface.new_ideas__spirit_v2">New Ideas: Spirit V2</a>
+    </h4>
+<p>
+      Just before the development of Spirit V2 began, Hartmut came across the StringTemplate library that is
+      a part of the ANTLR parser framework. <span class="emphasis"><em>attribute quote to http:<span class="emphasis"><em>/www.stringtemplate.org</em></span></em></span>
+      It is a Java template engine (with ports for C# and Python) for generating
+      source code, web pages, emails, or any other formatted text output. <span class="emphasis"><em>end
+      of quote!</em></span> The concepts presented in that library lead Hartmut to
+      the next step in the evolution of Spirit. Parsing and generation are tightly
+      connected to a formal notation, or a grammar. The grammar describes both input
+      and output, and therefore, a parser library should have a grammar driven output.
+      This duality is expressed in Spirit by the parser library <span class="emphasis"><em>Spirit.Qi</em></span>
+      and the generator library <span class="emphasis"><em>Spirit.Karma</em></span> using the same
+      component infastructure.
+    </p>
+<p>
+      The idea of creating a lexer library well integrated with the Spirit parsers
+      is not new. This has been discussed almost since Classic-Spirit (pre V2) initially
+      debuted. Several attempts to integrate existing lexer libraries and frameworks
+      with Spirit have been made and served as a proof of concept and usability (for
+      example see Wave:
+      The Boost C/C++ Preprocessor Library, and SLex:
+      a fully dynamic C++ lexer implemented with Spirit). Based on these experiences
+      we added <span class="emphasis"><em>Spirit.Lex</em></span>: a fully integrated lexer library
+      to the mix, allowing the user to take advantage of the power of regular expressions
+      for token matching, removing pressure from the parser components, simplifying
+      parser grammars. Again, Spirit's modular structure allowed us to reuse the
+      same underlying component library as for the parser and generator libraries.
+    </p>
+<a name="spirit.preface.how_to_use_this_manual"></a><h4>
+<a name="id586255"></a>
+      <a class="link" href="preface.html#spirit.preface.how_to_use_this_manual">How to use this manual</a>
+    </h4>
+<p>
+      Each major section (there are 3: <a class="link" href="qi.html" title="Qi - Writing Parsers">Qi</a>, <a class="link" href="karma.html" title="Karma - Writing Generators">Karma</a>, and <a class="link" href="lex.html" title="Lex - Writing Lexical Analyzers">Lex</a>)
+      is roughly divided into 3 parts:
+    </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+        Tutorials: A step by step guide with heavily annotated code. These are meant
+        to get the user acquainted with the library as quickly as possible. The objective
+        is to build the confidence of the user in using the library through abundant
+        examples and detailed instructions. Examples speak volumes and we have volumes
+        of examples!
+      </li>
+<li class="listitem">
+        Abstracts: A high level summary of key topics. The objective is to give the
+        user a high level view of the library, the key concepts, background and theories.
+      </li>
+<li class="listitem">
+        Reference: Detailed formal technical reference. We start with a quick reference
+        -- an easy to use table that maps into the reference proper. The reference
+        proper starts with C++ Concepts
+        followed by models of the concepts.
+      </li>
+</ol></div>
+<p>
+      Some icons are used to mark certain topics indicative of their relevance. These
+      icons precede some text to indicate:
+    </p>
+<div class="table">
+<a name="id586308"></a><p class="title"><b>Table 1. Icons</b></p>
+<div class="table-contents"><table class="table" summary="Icons">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+          <p>
+            Icon
+          </p>
+          </th>
+<th>
+          <p>
+            Name
+          </p>
+          </th>
+<th>
+          <p>
+            Meaning
+          </p>
+          </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+          <p>
+            <span class="inlinemediaobject"><img src="../../images/note.png" alt="note"></span>
+          </p>
+          </td>
+<td>
+          <p>
+            Note
+          </p>
+          </td>
+<td>
+          <p>
+            Generally useful information (an aside that doesn't fit in the flow of
+            the text)
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <span class="inlinemediaobject"><img src="../../images/tip.png" alt="tip"></span>
+          </p>
+          </td>
+<td>
+          <p>
+            Tip
+          </p>
+          </td>
+<td>
+          <p>
+            Suggestion on how to do something (especially something that not be obvious)
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <span class="inlinemediaobject"><img src="../../images/important.png" alt="important"></span>
+          </p>
+          </td>
+<td>
+          <p>
+            Important
+          </p>
+          </td>
+<td>
+          <p>
+            Important note on something to take particular notice of
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <span class="inlinemediaobject"><img src="../../images/caution.png" alt="caution"></span>
+          </p>
+          </td>
+<td>
+          <p>
+            Caution
+          </p>
+          </td>
+<td>
+          <p>
+            Take special care with this - it may not be what you expect and may cause
+            bad results
+          </p>
+          </td>
+</tr>
+<tr>
+<td>
+          <p>
+            <span class="inlinemediaobject"><img src="../../images/alert.png" alt="alert"></span>
+          </p>
+          </td>
+<td>
+          <p>
+            Danger
+          </p>
+          </td>
+<td>
+          <p>
+            This is likely to cause serious trouble if ignored
+          </p>
+          </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+      This documentation is automatically generated by Boost QuickBook documentation
+      tool. QuickBook can be found in the <a href="http://www.boost.org/tools/index.html" target="_top">Boost
+      Tools</a>.
+    </p>
+<a name="spirit.preface.support"></a><h4>
+<a name="id586549"></a>
+      <a class="link" href="preface.html#spirit.preface.support">Support</a>
+    </h4>
+<p>
+      Please direct all questions to Spirit's mailing list. You can subscribe to
+      the <a href="http://www.nabble.com/The-Spirit-Parser-Library-f3430.html" target="_top">Spirit
+      General List</a>. The mailing list has a searchable archive. A search link
+      to this archive is provided in Spirit's
+      home page. You may also read and post messages to the mailing list through
+      <a href="news://news.gmane.org/gmane.comp.spirit.general" target="_top">Spirit General
+      NNTP news portal</a> (thanks to Gmane).
+      The news group mirrors the mailing list. Here is a link to the archives: http://news.gmane.org/gmane.comp.parsers.spirit.general.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="what_s_new.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Qi - Writing Parsers</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="abstracts/parsing_expression_grammar.html" title="Parsing Expression Grammar">
+<link rel="next" href="qi/tutorials.html" title="Tutorials">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="abstracts/parsing_expression_grammar.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi/tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Qi - Writing Parsers">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.qi"></a><a class="link" href="qi.html" title="Qi - Writing Parsers"> Qi - Writing Parsers</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Tutorials</span></dt>
+<dd><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="qi/tutorials/complex___our_first_complex_parser.html">Complex
+        - Our first complex parser</a></span></dt>
+<dt><span class="section"><a href="qi/tutorials/sum___adding_numbers.html">Sum - adding
+        numbers</a></span></dt>
+<dt><span class="section"><a href="qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html">Number
+        List - stuffing numbers into a std::vector</a></span></dt>
+<dt><span class="section"><a href="qi/tutorials/number_list_redux___list_syntax.html">Number
+        List Redux - list syntax</a></span></dt>
+<dt><span class="section"><a href="qi/tutorials/number_list_attribute___one_more__with_style.html">Number
+        List Attribute - one more, with style</a></span></dt>
+<dt><span class="section">Roman Numerals</span></dt>
+<dt><span class="section"><a href="qi/tutorials/employee___parsing_into_structs.html">Employee
+        - Parsing into structs</a></span></dt>
+<dt><span class="section">Mini XML - ASTs!</span></dt>
+<dt><span class="section"><a href="qi/tutorials/mini_xml___error_handling.html">Mini
+        XML - Error Handling</a></span></dt>
+</dl></dd>
+<dt><span class="section">Quick Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Common Notation</span></dt>
+<dt><span class="section">Qi Parsers</span></dt>
+<dt><span class="section"><a href="qi/quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="qi/quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></dd>
+<dt><span class="section">Reference</span></dt>
+<dd><dl>
+<dt><span class="section">Parser Concepts</span></dt>
+<dt><span class="section">Basics</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Char</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Numeric</span></dt>
+<dt><span class="section">Operator</span></dt>
+<dt><span class="section">String</span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="abstracts/parsing_expression_grammar.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi/tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,61 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quick Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi.html" title="Qi - Writing Parsers">
+<link rel="prev" href="tutorials/mini_xml___error_handling.html" title="Mini XML - Error Handling">
+<link rel="next" href="quick_reference/common_notation.html" title="Common Notation">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/mini_xml___error_handling.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quick Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.qi.quick_reference"></a><a class="link" href="quick_reference.html" title="Quick Reference">Quick Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Common Notation</span></dt>
+<dt><span class="section">Qi Parsers</span></dt>
+<dt><span class="section"><a href="quick_reference/compound_attribute_rules.html">Compound
+        Attribute Rules</a></span></dt>
+<dt><span class="section">Non-terminals</span></dt>
+<dt><span class="section"><a href="quick_reference/semantic_actions.html">Semantic
+        Actions</a></span></dt>
+<dt><span class="section">Phoenix</span></dt>
+</dl></div>
+<p>
+        This quick reference section is provided for convenience. You can use this
+        section as a sort of a "cheat-sheet" on the most commonly used
+        Qi components. It is not intended to be complete, but should give you an
+        easy way to recall a particular component without having to dig up on pages
+        and pages of reference doumentation.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tutorials/mini_xml___error_handling.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Common Notation</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="../quick_reference.html" title="Quick Reference">
+<link rel="next" href="qi_parsers.html" title="Qi Parsers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi_parsers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Common Notation">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.common_notation"></a><a class="link" href="common_notation.html" title="Common Notation">Common Notation</a>
+</h4></div></div></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
+<dd><p>
+              Parser type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span>
+          <span class="identifier">b</span><span class="special">,</span>
+          <span class="identifier">c</span></code></span></dt>
+<dd><p>
+              Parser objects
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span>
+          <span class="identifier">C</span></code></span></dt>
+<dd><p>
+              Attribute types of parsers <code class="computeroutput"><span class="identifier">a</span></code>,
+              <code class="computeroutput"><span class="identifier">b</span></code> and <code class="computeroutput"><span class="identifier">c</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">I</span></code></span></dt>
+<dd><p>
+              The iterator type used for parsing
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Unused</span></code></span></dt>
+<dd><p>
+              An <code class="computeroutput"><span class="identifier">unused_type</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dd><p>
+              The enclosing rule's <code class="computeroutput"><span class="identifier">Context</span></code>
+              type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">attrib</span></code></span></dt>
+<dd><p>
+              An attribute value
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></span></dt>
+<dd><p>
+              An attribute type
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+              A boolean expression
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fp</span></code></span></dt>
+<dd><p>
+              A (lazy parser) function with signature <code class="computeroutput"><span class="identifier">P</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
+<dd><p>
+              A (semantic action) function with signature <code class="computeroutput"><span class="keyword">void</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">&)</span></code>. The third parameter is a boolean
+              flag that can be set to false to force the parse to fail. Both <code class="computeroutput"><span class="identifier">Context</span></code> and the boolean flag are
+              optional.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">first</span></code></span></dt>
+<dd><p>
+              An iterator pointing to the start of input
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">last</span></code></span></dt>
+<dd><p>
+              An iterator pointing to the end of input
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Ch</span></code></span></dt>
+<dd><p>
+              Character-class specific character type (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span></code></span></dt>
+<dd><p>
+              Character-class specific character (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ch2</span></code></span></dt>
+<dd><p>
+              Character-class specific character (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">charset</span></code></span></dt>
+<dd><p>
+              Character-set specifier string (example: "a-z0-9")
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">str</span></code></span></dt>
+<dd><p>
+              Character-class specific string (See Character Class Types)
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Str</span></code></span></dt>
+<dd><p>
+              Attribute of <code class="computeroutput"><span class="identifier">str</span></code>:
+              <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+              where <code class="computeroutput"><span class="identifier">T</span></code> is the underlying
+              character type of <code class="computeroutput"><span class="identifier">str</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">tuple</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a fusion sequence
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">vector</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for an STL container
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">variant</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a boost::variant
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">optional</span><span class="special"><></span></code></span></dt>
+<dd><p>
+              Used as a placeholder for a boost::optional
+            </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi_parsers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,339 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Compound Attribute Rules</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="qi_parsers/action.html" title="action">
+<link rel="next" href="non_terminals.html" title="Non-terminals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qi_parsers/action.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_terminals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Compound Attribute Rules">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.compound_attribute_rules"></a><a class="link" href="compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+        Attribute Rules</a>
+</h4></div></div></div>
+<a name="spirit.qi.quick_reference.compound_attribute_rules.notation"></a><h6>
+<a name="id626914"></a>
+          <a class="link" href="compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Notation</a>
+        </h6>
+<p>
+          The notation we will use will be of the form:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...</span> <span class="special">--></span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span><span class="special">:</span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">a</span></code>, <code class="computeroutput"><span class="identifier">b</span></code>,
+          etc. are the operands. <code class="computeroutput"><span class="identifier">A</span></code>,
+          <code class="computeroutput"><span class="identifier">B</span></code>, etc. are the operand's
+          attribute types. <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span></code>
+          is the expression involving the operands and <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span></code>
+          is the resulting attribute type of the composite expression.
+        </p>
+<p>
+          For instance:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+</pre>
+<p>
+          reads as: given, <code class="computeroutput"><span class="identifier">a</span></code> and
+          <code class="computeroutput"><span class="identifier">b</span></code> are parsers, and <code class="computeroutput"><span class="identifier">A</span></code> is the type of the attribute of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">B</span></code>
+          is the type of the attribute of <code class="computeroutput"><span class="identifier">b</span></code>,
+          then the type of the attribute of <code class="computeroutput"><span class="identifier">a</span>
+          <span class="special">>></span> <span class="identifier">b</span></code>
+          will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>.
+        </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            In the attribute tables, we will use <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">...></span></code> as placeholders only. The notation
+            of <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+            stands for <span class="emphasis"><em>any STL
+            container</em></span> holding elements of type <code class="computeroutput"><span class="identifier">A</span></code>
+            and the notation <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">...></span></code> stands for <span class="emphasis"><em>any Boost.Fusion sequence</em></span>
+            holding <code class="computeroutput"><span class="identifier">A</span></code>, <code class="computeroutput"><span class="identifier">B</span></code>, ... etc. elements. Finally, <code class="computeroutput"><span class="identifier">Unused</span></code> stands for <code class="computeroutput"><span class="identifier">unused_type</span></code>.
+          </p></td></tr>
+</table></div>
+<a name="spirit.qi.quick_reference.compound_attribute_rules.compound_parser_attribute_types"></a><h6>
+<a name="id627396"></a>
+          <a class="link" href="compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.compound_parser_attribute_types">Compound
+          Parser Attribute Types</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Attribute
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  sequence (<code class="computeroutput"><span class="special">>></span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  expect (<code class="computeroutput"><span class="special">></span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  alternative (<code class="computeroutput"><span class="special">|</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  difference (<code class="computeroutput"><span class="special">-</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  kleene (unary <code class="computeroutput"><span class="special">*</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  plus (unary <code class="computeroutput"><span class="special">+</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  list (<code class="computeroutput"><span class="special">%</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  repetition
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  sequential or (<code class="computeroutput"><span class="special">||</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> <span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  optional (unary <code class="computeroutput"><span class="special">-</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  and predicate (<code class="computeroutput"><span class="special">&</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                  <span class="identifier">A</span> <span class="special">--></span>
+                  <span class="special">&</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  not predicate (<code class="computeroutput"><span class="special">!</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+                  <span class="identifier">A</span> <span class="special">--></span>
+                  <span class="special">!</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  permutation (<code class="computeroutput"><span class="special">^</span></code>)
+                </p>
+                </td>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> <span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="qi_parsers/action.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="non_terminals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,342 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Non-terminals</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="compound_attribute_rules.html" title="Compound Attribute Rules">
+<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compound_attribute_rules.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Non-terminals">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.non_terminals"></a><a class="link" href="non_terminals.html" title="Non-terminals">Non-terminals</a>
+</h4></div></div></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">RT</span></code></span></dt>
+<dd><p>
+              Synthesized attribute. The rule or grammar's return type.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Arg1</span></code>,
+          <code class="computeroutput"><span class="identifier">Arg2</span></code>, <code class="computeroutput"><span class="identifier">ArgN</span></code></span></dt>
+<dd><p>
+              Inherited attributes. Zero or more arguments.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">L1</span></code>,
+          <code class="computeroutput"><span class="identifier">L2</span></code>, <code class="computeroutput"><span class="identifier">LN</span></code></span></dt>
+<dd><p>
+              Zero or more local variables.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">r</span><span class="special">,</span> <span class="identifier">r2</span></code></span></dt>
+<dd><p>
+              Rules
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dd><p>
+              A grammar
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+              A parser expression
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">my_grammar</span></code></span></dt>
+<dd><p>
+              A user defined grammar
+            </p></dd>
+</dl>
+</div>
+<div class="variablelist" title="Terminology">
+<p class="title"><b>Terminology</b></p>
+<dl>
+<dt><span class="term">Signature</span></dt>
+<dd><p>
+              <code class="computeroutput"><span class="identifier">RT</span><span class="special">(</span><span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="special">...</span>
+              <span class="special">,</span><span class="identifier">ArgN</span><span class="special">)</span></code>. The signature specifies the synthesized
+              (return value) and inherited (arguments) attributes.
+            </p></dd>
+<dt><span class="term">Locals</span></dt>
+<dd><p>
+              <code class="computeroutput"><span class="identifier">locals</span><span class="special"><</span><span class="identifier">L1</span><span class="special">,</span> <span class="identifier">L2</span> <span class="special">...,</span>
+              <span class="identifier">LN</span><span class="special">></span></code>.
+              The local variables.
+            </p></dd>
+<dt><span class="term">Skipper</span></dt>
+<dd><p>
+              The skip-parser type
+            </p></dd>
+</dl>
+</div>
+<div class="variablelist" title="Template Arguments">
+<p class="title"><b>Template Arguments</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+              The iterator type you will use for parsing.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A1</span></code>,
+          <code class="computeroutput"><span class="identifier">A2</span></code>, <code class="computeroutput"><span class="identifier">A3</span></code></span></dt>
+<dd><p>
+              Can be one of 1)Signature 2)Locals 3)Skipper.
+            </p></dd>
+</dl>
+</div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span>
+                  <span class="identifier">A1</span><span class="special">,</span>
+                  <span class="identifier">A2</span><span class="special">,</span>
+                  <span class="identifier">A3</span><span class="special">></span>
+                  <span class="identifier">r</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Rule declaration. <code class="computeroutput"><span class="identifier">Iterator</span></code>
+                  is required. <code class="computeroutput"><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span></code>
+                  are optional and can be specified in any order. <code class="computeroutput"><span class="identifier">name</span></code>
+                  is an optional string that gives the rule its name, useful for
+                  debugging and error handling.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span>
+                  <span class="identifier">A1</span><span class="special">,</span>
+                  <span class="identifier">A2</span><span class="special">,</span>
+                  <span class="identifier">A3</span><span class="special">></span>
+                  <span class="identifier">r</span><span class="special">(</span><span class="identifier">r2</span><span class="special">);</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Copy construct rule <code class="computeroutput"><span class="identifier">r</span></code>
+                  from rule <code class="computeroutput"><span class="identifier">r2</span></code>.
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+                  <span class="identifier">r2</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Assign rule <code class="computeroutput"><span class="identifier">r2</span></code>
+                  to <code class="computeroutput"><span class="identifier">r</span></code>. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">alias</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  return an alias of <code class="computeroutput"><span class="identifier">r</span></code>.
+                  The alias is a parser that holds a reference to <code class="computeroutput"><span class="identifier">r</span></code>.
+                  Reference semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">copy</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Get a copy of <code class="computeroutput"><span class="identifier">r</span></code>.
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Naming a rule
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Getting the name of a rule
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  debug(r)
+                </p>
+                </td>
+<td>
+                <p>
+                  Debug rule <code class="computeroutput"><span class="identifier">r</span></code>
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+                  <span class="identifier">p</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Rule definition
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">r</span> <span class="special">%=</span>
+                  <span class="identifier">p</span><span class="special">;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Auto-rule definition. The attribute of <code class="computeroutput"><span class="identifier">p</span></code>
+                  should be compatible with the synthesized attribute of <code class="computeroutput"><span class="identifier">r</span></code>. When <code class="computeroutput"><span class="identifier">p</span></code>
+                  is successful, its attribute is automatically propagated to <code class="computeroutput"><span class="identifier">r</span></code>'s synthesized attribute.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">my_grammar</span> <span class="special">:</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">my_grammar</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">my_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">,</span> <span class="identifier">name</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="comment">// Rule definitions
+</span>        <span class="identifier">start</span> <span class="special">=</span> <span class="comment">/* ... */</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+    <span class="comment">// more rule declarations...
+</span><span class="special">};</span>
+</pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+                  Grammar definition. <code class="computeroutput"><span class="identifier">name</span></code>
+                  is an optional string that gives the grammar its name, useful for
+                  debugging and error handling.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  my_grammar<Iterator> g
+                </p>
+                </td>
+<td>
+                <p>
+                  Instantiating a grammar
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Naming a grammar
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Getting the name of a grammar
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="compound_attribute_rules.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Phoenix</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Phoenix">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.phoenix"></a><a class="link" href="phoenix.html" title="Phoenix">Phoenix</a>
+</h4></div></div></div>
+<p>
+          Boost.Phoenix makes
+          it easier to attach semantic actions. You just inline your lambda expressions:
+        </p>
+<pre class="programlisting"><span class="identifier">p</span><span class="special">[</span><span class="identifier">phoenix</span><span class="special">-</span><span class="identifier">lambda</span><span class="special">-</span><span class="identifier">expression</span><span class="special">]</span>
+</pre>
+<p>
+          Spirit.Qi provides some Boost.Phoenix
+          placeholders to important information from the <code class="computeroutput"><span class="identifier">Attrib</span></code>
+          and <code class="computeroutput"><span class="identifier">Context</span></code> that are otherwise
+          fiddly to extract.
+        </p>
+<div class="variablelist" title="Spirit.Qi specific Phoenix placeholders">
+<p class="title"><b>Spirit.Qi specific Phoenix placeholders</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_1</span><span class="special">,</span> <span class="identifier">_2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_N</span></code></span></dt>
+<dd><p>
+              Nth attribute of <code class="computeroutput"><span class="identifier">p</span></code>
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dd><p>
+              The enclosing rule's synthesized attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_r1</span><span class="special">,</span> <span class="identifier">_r2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_rN</span></code></span></dt>
+<dd><p>
+              The enclosing rule's Nth inherited attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_a</span><span class="special">,</span> <span class="identifier">_b</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_j</span></code></span></dt>
+<dd><p>
+              The enclosing rule's local variables (<code class="computeroutput"><span class="identifier">_a</span></code>
+              refers to the first).
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dd><p>
+              The enclosing rule's synthesized attribute.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">_pass</span></code></span></dt>
+<dd><p>
+              Assign <code class="computeroutput"><span class="keyword">false</span></code> to <code class="computeroutput"><span class="identifier">_pass</span></code> to force a parser failure.
+            </p></dd>
+</dl>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Qi Parsers</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="common_notation.html" title="Common Notation">
+<link rel="next" href="qi_parsers/char.html" title="char">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi_parsers/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Qi Parsers">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers"></a><a class="link" href="qi_parsers.html" title="Qi Parsers">Qi Parsers</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">char</span></dt>
+<dt><span class="section">numeric</span></dt>
+<dt><span class="section">string</span></dt>
+<dt><span class="section">auxiliary</span></dt>
+<dt><span class="section">binary</span></dt>
+<dt><span class="section">directive</span></dt>
+<dt><span class="section">operator</span></dt>
+<dt><span class="section">action</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="qi_parsers/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>action</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="operator.html" title="operator">
+<link rel="next" href="../compound_attribute_rules.html" title="Compound Attribute Rules">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../compound_attribute_rules.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="action">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.action"></a><a class="link" href="action.html" title="action">action</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Attribute of <code class="computeroutput"><span class="identifier">p</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Call semantic action, <code class="computeroutput"><span class="identifier">fa</span></code>
+                    if p succeeds.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../compound_attribute_rules.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,195 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>auxiliary</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="string.html" title="string">
+<link rel="next" href="binary.html" title="binary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="auxiliary">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.auxiliary"></a><a class="link" href="auxiliary.html" title="auxiliary">auxiliary</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eol</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches the end of line (<code class="computeroutput"><span class="special">\</span><span class="identifier">r</span></code> or <code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code> or <code class="computeroutput"><span class="special">\</span><span class="identifier">r</span><span class="special">\</span><span class="identifier">n</span></code>)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eoi</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches the end of input (first == last)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match an empty string
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If <code class="computeroutput"><span class="identifier">b</span></code> is true,
+                    match an empty string
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fp</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Attribute of <code class="computeroutput"><span class="identifier">P</span></code>
+                    where <code class="computeroutput"><span class="identifier">P</span></code> is the
+                    return type of <code class="computeroutput"><span class="identifier">fp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Invoke <code class="computeroutput"><span class="identifier">fp</span></code> at
+                    parse time, returning a parser <code class="computeroutput"><span class="identifier">p</span></code>
+                    which is then called to parse.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">fp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    see <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fp</span><span class="special">)</span></code>
+                    above
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Equivalent to <code class="computeroutput"><span class="identifier">lazy</span><span class="special">[</span><span class="identifier">fp</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/auxiliary/attr.html" title="Attribute (attr)"><code class="computeroutput"><span class="identifier">attr</span><span class="special">(</span><span class="identifier">attrib</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Doesn't consume/parse any input, but exposes the argument <code class="computeroutput"><span class="identifier">attrib</span></code> as its attribute.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>binary</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="auxiliary.html" title="auxiliary">
+<link rel="next" href="directive.html" title="directive">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="binary">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.binary"></a><a class="link" href="binary.html" title="binary">binary</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    8 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an 8 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 16 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 16 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    16 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 16 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 32 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 32 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    32 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 32 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits native endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 64 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits big endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 64 bit binary
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    64 bits little endian
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a 64 bit binary
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,407 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>char</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="next" href="numeric.html" title="numeric">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="char">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.char"></a><a class="link" href="char.html" title="char">char</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/string.html" title="String (string, lit)"><code class="computeroutput"><span class="identifier">ch</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/string.html" title="String (string, lit)"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any character
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">ch</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"c"</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a single char string literal, <code class="computeroutput"><span class="identifier">c</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">ch</span><span class="special">,</span>
+                    <span class="identifier">ch2</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a range of chars from <code class="computeroutput"><span class="identifier">ch</span></code>
+                    to <code class="computeroutput"><span class="identifier">ch2</span></code> (inclusive)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="identifier">charset</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character set <code class="computeroutput"><span class="identifier">charset</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">alnum</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalnum</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">alpha</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isalpha</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">blank</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isblank</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">cntrl</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iscntrl</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">digit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isdigit</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">graph</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isgraph</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">print</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isprint</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">punct</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ispunct</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">space</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isspace</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">xdigit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isxdigit</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lower</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">islower</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">upper</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Ch</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches a character based on the equivalent of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">isupper</span></code> in the current character
+                    set
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,244 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>directive</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="binary.html" title="binary">
+<link rel="next" href="operator.html" title="operator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="directive">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.directive"></a><a class="link" href="directive.html" title="directive">directive</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/lexeme.html" title="Inhibiting Skipping (lexeme[])"><code class="computeroutput"><span class="identifier">lexeme</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Disable skip parsing for <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/no_case.html" title="Inhibiting Case Sensitivity (no_case[])"><code class="computeroutput"><span class="identifier">no_case</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Inhibits case-sensitivity for <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/omit.html" title="Ignoring Attribute (omit[])"><code class="computeroutput"><span class="identifier">omit</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Ignores the attribute type of <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/raw.html" title="Transduction Parsing (raw[])"><code class="computeroutput"><span class="identifier">raw</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    boost::iterator_range<code class="computeroutput"><span class="special"><</span><span class="identifier">I</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Presents the transduction of <code class="computeroutput"><span class="identifier">a</span></code>
+                    as an iterator range
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> zero
+                    or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a><code class="computeroutput"><span class="special">(</span><span class="identifier">N</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">N</span></code> times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a><code class="computeroutput"><span class="special">(</span><span class="identifier">N</span><span class="special">,</span> <span class="identifier">M</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">N</span></code> to <code class="computeroutput"><span class="identifier">M</span></code>
+                    times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/repeat.html" title="Repetition (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a><code class="computeroutput"><span class="special">(</span><span class="identifier">N</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> <code class="computeroutput"><span class="identifier">N</span></code> or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/skip.html" title="Re-Establish Skipping (skip[])"><code class="computeroutput"><span class="identifier">skip</span></code></a><code class="computeroutput"><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Re-establish the skipper that got inhibited by lexeme
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/directive/skip.html" title="Re-Establish Skipping (skip[])"><code class="computeroutput"><span class="identifier">skip</span></code></a><code class="computeroutput"><span class="special">(</span><span class="identifier">p</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Use <code class="computeroutput"><span class="identifier">p</span></code> as a skipper
+                    for parsing <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,310 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>numeric</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="char.html" title="char">
+<link rel="next" href="string.html" title="string">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="numeric">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.numeric"></a><a class="link" href="numeric.html" title="numeric">numeric</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">float_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">float</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a floating point number into a <code class="computeroutput"><span class="keyword">float</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">double_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a floating point number into a <code class="computeroutput"><span class="keyword">double</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a floating point number into a <code class="computeroutput"><span class="keyword">long</span>
+                    <span class="keyword">double</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">bin</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a binary integer into an <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">oct</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an octal integer into an <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hex</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a hexadecimal integer into an <code class="computeroutput"><span class="keyword">unsigned</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ushort_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an unsigned short integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an unsigned long integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">uint_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an unsigned int
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+                    <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an unsigned long long
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">short_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">short</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a short integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a long integer
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">int_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">int</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an int
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a long long
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,306 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>operator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="directive.html" title="directive">
+<link rel="next" href="action.html" title="action">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="action.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="operator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.operator"></a><a class="link" href="operator.html" title="operator">operator</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Not predicate. If the predicate <code class="computeroutput"><span class="identifier">a</span></code>
+                    matches, fail. Otherwise, return a zero length match.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    And predicate. If the predicate <code class="computeroutput"><span class="identifier">a</span></code>
+                    matches, return a zero length match. Otherwise, fail.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Optional. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    zero or one time
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Kleene. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    zero or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Plus. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    one or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Alternative. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    or <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Sequence. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    followed by <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Expect. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    followed by <code class="computeroutput"><span class="identifier">b</span></code>.
+                    <code class="computeroutput"><span class="identifier">b</span></code> is expected
+                    to match when <code class="computeroutput"><span class="identifier">a</span></code>
+                    matches, otherwise, an <code class="computeroutput"><span class="identifier">expectation_failure</span></code>
+                    is thrown.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Difference. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    but not <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span>
+                    <span class="identifier">B</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Sequential Or. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    or <code class="computeroutput"><span class="identifier">b</span></code> or <code class="computeroutput"><span class="identifier">a</span></code> followed by <code class="computeroutput"><span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    List. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    delimited <code class="computeroutput"><span class="identifier">b</span></code> one
+                    or more times
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span></code>
+                    <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span></code>
+                    <code class="computeroutput"><span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span>
+                    <span class="special">></span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Permutation. Parse <code class="computeroutput"><span class="identifier">a</span></code>
+                    and <code class="computeroutput"><span class="identifier">b</span></code> in any
+                    order
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="action.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,187 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>string</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi_parsers.html" title="Qi Parsers">
+<link rel="prev" href="numeric.html" title="numeric">
+<link rel="next" href="auxiliary.html" title="auxiliary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="string">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.quick_reference.qi_parsers.string"></a><a class="link" href="string.html" title="string">string</a>
+</h5></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/string.html" title="String (string, lit)"><code class="computeroutput"><span class="identifier">str</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">str</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/string.html" title="String (string, lit)"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">str</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Unused</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">str</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/string.html" title="String (string, lit)"><code class="computeroutput"><span class="identifier">string</span><span class="special">(</span><span class="identifier">str</span><span class="special">)</span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Str</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches <code class="computeroutput"><span class="identifier">str</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <a class="link" href="../../reference/string/symbols.html" title="Symbols (symbols)"><code class="computeroutput"><span class="identifier">symbols</span><span class="special"><</span><span class="identifier">Ch</span><span class="special">,</span>
+                    <span class="identifier">T</span><span class="special">></span></code></a>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    N/A
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Declare a symbol table, <code class="computeroutput"><span class="identifier">sym</span></code>.
+                    <code class="computeroutput"><span class="identifier">Ch</span></code> is the underlying
+                    char type of the symbol table keys. <code class="computeroutput"><span class="identifier">T</span></code>
+                    is the data type associated with each key.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
+    <span class="special">(</span><span class="identifier">str1</span><span class="special">,</span> <span class="identifier">val1</span><span class="special">)</span>
+    <span class="special">(</span><span class="identifier">str2</span><span class="special">,</span> <span class="identifier">val2</span><span class="special">)</span>
+    <span class="comment">/*...more...*/</span>
+<span class="special">;</span>
+</pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    N/A
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Add symbols into a symbol table, <code class="computeroutput"><span class="identifier">sym</span></code>.
+                    val1 and val2 are optional data of type <code class="computeroutput"><span class="identifier">T</span></code>,
+                    the data type associated with each key.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches entries in the symbol table, <code class="computeroutput"><span class="identifier">sym</span></code>.
+                    If successful, returns the data associated with the key
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi_parsers.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,71 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../quick_reference.html" title="Quick Reference">
+<link rel="prev" href="non_terminals.html" title="Non-terminals">
+<link rel="next" href="phoenix.html" title="Phoenix">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_terminals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.quick_reference.semantic_actions"></a><a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic
+        Actions</a>
+</h4></div></div></div>
+<p>
+          Has the form:
+        </p>
+<pre class="programlisting"><span class="identifier">p</span><span class="special">[</span><span class="identifier">f</span><span class="special">]</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">f</span></code> is a function with
+          the signatures:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&);</span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="keyword">bool</span><span class="special">&);</span>
+</pre>
+<p>
+          You can use <code class="computeroutput">Boost.Bind</code>
+          to bind member functions. For function objects, the allowed signatures
+          are:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">Context</span><span class="special">&,</span> <span class="keyword">bool</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+          The <code class="computeroutput"><span class="identifier">unused_type</span></code> is used
+          in the signatures above to signify 'don't care'.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_terminals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="phoenix.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,55 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Reference</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi.html" title="Qi - Writing Parsers">
+<link rel="prev" href="quick_reference/phoenix.html" title="Phoenix">
+<link rel="next" href="reference/parser_concepts.html" title="Parser Concepts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/parser_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Reference">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.qi.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Parser Concepts</span></dt>
+<dt><span class="section">Basics</span></dt>
+<dt><span class="section">Auxiliary</span></dt>
+<dt><span class="section"> Binary</span></dt>
+<dt><span class="section">Char</span></dt>
+<dt><span class="section"> Directive</span></dt>
+<dt><span class="section">Numeric</span></dt>
+<dt><span class="section">Operator</span></dt>
+<dt><span class="section">String</span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_reference/phoenix.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="reference/parser_concepts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Auxiliary</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="basics.html" title="Basics">
+<link rel="next" href="auxiliary/attr.html" title="Attribute (attr)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary/attr.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Auxiliary">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.auxiliary"></a><a class="link" href="auxiliary.html" title="Auxiliary">Auxiliary</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Attribute (attr)</span></dt>
+<dt><span class="section"> End of Line (eol)</span></dt>
+<dt><span class="section"><a href="auxiliary/eoi.html"> End of Input
+          (<code class="computeroutput"><span class="identifier">eoi</span></code>)</a></span></dt>
+<dt><span class="section"> Epsilon (eps)</span></dt>
+<dt><span class="section"> Lazy (lazy)</span></dt>
+</dl></div>
+<p>
+          This module includes different auxiliary parsers not fitting into any of
+          the other categories. This module includes the <code class="computeroutput"><span class="identifier">attr</span></code>,
+          <code class="computeroutput"><span class="identifier">eoi</span></code>, <code class="computeroutput"><span class="identifier">eol</span></code>,
+          <code class="computeroutput"><span class="identifier">eps</span></code>, and <code class="computeroutput"><span class="identifier">lazy</span></code> parsers.
+        </p>
+<a name="spirit.qi.reference.auxiliary.module_header"></a><h6>
+<a name="id642487"></a>
+          <a class="link" href="auxiliary.html#spirit.qi.reference.auxiliary.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_auxiliary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary/attr.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,258 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Attribute (attr)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="../auxiliary.html" title="Auxiliary">
+<link rel="next" href="eol.html" title="End of Line (eol)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eol.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Attribute (attr)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.auxiliary.attr"></a><a class="link" href="attr.html" title="Attribute (attr)"> Attribute (<code class="computeroutput"><span class="identifier">attr</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.auxiliary.attr.description"></a><h6>
+<a name="id642578"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.description">Description</a>
+          </h6>
+<p>
+            The Attribute parser does not consume any input, for this reason it always
+            matches an empty string and always succeeds. It's purpose is to expose
+            its specified parameter as an attribute.
+          </p>
+<a name="spirit.qi.reference.auxiliary.attr.header"></a><h6>
+<a name="id642595"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/attr.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_attr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.attr.namespace"></a><h6>
+<a name="id642670"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">attr</span> <span class="comment">// alias:
+                    boost::spirit::qi::attr</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.attr.model_of"></a><h6>
+<a name="id642748"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A arbitrary typed constant value, e.g. 0.0, "Hello", or
+                a variable of arbitrary type or a __lazy<span class="underline">argument</span>_
+                that evaluates to an arbitrary type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span></code></span></dt>
+<dd><p>
+                The type of <code class="computeroutput"><span class="identifier">a</span></code> or
+                if it is a __lazy<span class="underline">argument</span>_,
+                its return type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.auxiliary.attr.expression_semantics"></a><h6>
+<a name="id642841"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">attr</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a pseudo parser exposing the current value of <code class="computeroutput"><span class="identifier">a</span></code> as its attribute without
+                    consuming any input at parse time.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.attr.attributes"></a><h6>
+<a name="id642943"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">attr</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">A</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.attr.complexity"></a><h6>
+<a name="id643032"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The complexity is constant as no input is consumed and no matching is
+            done.
+          </p>
+<a name="spirit.qi.reference.auxiliary.attr.example"></a><h6>
+<a name="id643060"></a>
+            <a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">attr</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Using <code class="computeroutput"><span class="identifier">attr</span></code> with literals:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">(</span><span class="string">"boost"</span><span class="special">),</span> <span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">str</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>            <span class="comment">// will print 'boost'
+</span>
+<span class="keyword">double</span> <span class="identifier">d</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">(</span><span class="number">1.0</span><span class="special">),</span> <span class="identifier">d</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>              <span class="comment">// will print '1.0'
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Using <code class="computeroutput"><span class="identifier">attr</span></code> with Phoenix function objects:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">d</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+<span class="keyword">double</span> <span class="identifier">d1</span> <span class="special">=</span> <span class="number">1.2</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">d1</span><span class="special">)),</span> <span class="identifier">d</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">d</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>              <span class="comment">// will print '1.2'
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eol.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,213 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>End of Input (eoi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="eol.html" title="End of Line (eol)">
+<link rel="next" href="eps.html" title="Epsilon (eps)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eol.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eps.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="End of Input (eoi)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.auxiliary.eoi"></a><a class="link" href="eoi.html" title="End of Input (eoi)"> End of Input
+          (<code class="computeroutput"><span class="identifier">eoi</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.auxiliary.eoi.description"></a><h6>
+<a name="id645264"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">eoi</span></code> parser matches
+            the end of input (returns a sucessful match with 0 length when the input
+            is exhausted)
+          </p>
+<a name="spirit.qi.reference.auxiliary.eoi.header"></a><h6>
+<a name="id645288"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eoi.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_eoi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.eoi.namespace"></a><h6>
+<a name="id645362"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">eoi</span> <span class="comment">// alias:
+                    boost::spirit::qi::eoi</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eoi.model_of"></a><h6>
+<a name="id645440"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.auxiliary.eoi.expression_semantics"></a><h6>
+<a name="id645474"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eoi</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a parser that matches the end of input.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eoi.attributes"></a><h6>
+<a name="id645558"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eoi</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eoi.complexity"></a><h6>
+<a name="id645636"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.auxiliary.eoi.example"></a><h6>
+<a name="id645660"></a>
+            <a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">eoi</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Using <code class="computeroutput"><span class="identifier">eoi</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">eoi</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eol.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eps.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,211 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>End of Line (eol)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="attr.html" title="Attribute (attr)">
+<link rel="next" href="eoi.html" title="End of Input (eoi)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="attr.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eoi.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="End of Line (eol)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.auxiliary.eol"></a><a class="link" href="eol.html" title="End of Line (eol)"> End of Line (<code class="computeroutput"><span class="identifier">eol</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.auxiliary.eol.description"></a><h6>
+<a name="id644742"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">eol</span></code> parser matches
+            the end of line (CR/LF and combinations thereof).
+          </p>
+<a name="spirit.qi.reference.auxiliary.eol.header"></a><h6>
+<a name="id644766"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eol.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_eol</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.eol.namespace"></a><h6>
+<a name="id644840"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">eol</span> <span class="comment">// alias:
+                    boost::spirit::qi::eol</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eol.model_of"></a><h6>
+<a name="id644918"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.auxiliary.eol.expression_semantics"></a><h6>
+<a name="id644952"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eol</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a parser that matches the end of line.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eol.attributes"></a><h6>
+<a name="id645036"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eol</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eol.complexity"></a><h6>
+<a name="id645114"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.auxiliary.eol.example"></a><h6>
+<a name="id645138"></a>
+            <a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">eol</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Using <code class="computeroutput"><span class="identifier">eol</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\n"</span><span class="special">,</span> <span class="identifier">eol</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="attr.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="eoi.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,327 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Epsilon (eps)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="eoi.html" title="End of Input (eoi)">
+<link rel="next" href="lazy.html" title="Lazy (lazy)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eoi.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lazy.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Epsilon (eps)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.auxiliary.eps"></a><a class="link" href="eps.html" title="Epsilon (eps)"> Epsilon (<code class="computeroutput"><span class="identifier">eps</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.auxiliary.eps.description"></a><h6>
+<a name="id645786"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.description">Description</a>
+          </h6>
+<p>
+            The Epsilon (<code class="computeroutput"><span class="identifier">eps</span></code>) is
+            a multi-purpose parser that returns a zero length match.
+          </p>
+<a name="spirit.qi.reference.auxiliary.eps.simple_form"></a><h6>
+<a name="id645810"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.simple_form">Simple
+            Form</a>
+          </h6>
+<p>
+            In its simplest form, <code class="computeroutput"><span class="identifier">eps</span></code>
+            matches the null string and always returns a match of zero length:
+          </p>
+<pre class="programlisting"><span class="identifier">eps</span> <span class="comment">// always returns a zero-length match
+</span></pre>
+<p>
+            This form is usually used to trigger a semantic action unconditionally.
+            For example, it is useful in triggering error messages when a set of
+            alternatives fail:
+          </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">c</span> <span class="special">|</span> <span class="identifier">eps</span><span class="special">[</span><span class="identifier">error</span><span class="special">()];</span> <span class="comment">// Call error if a, b, and c fail to match
+</span></pre>
+<a name="spirit.qi.reference.auxiliary.eps.semantic_predicate"></a><h6>
+<a name="id645911"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.semantic_predicate">Semantic
+            Predicate</a>
+          </h6>
+<p>
+            Semantic predicates allow you to attach a conditional function anywhere
+            in the grammar. In this role, the epsilon takes a __lazy<span class="underline">argument</span>_
+            that returns <code class="computeroutput"><span class="keyword">true</span></code> or <code class="computeroutput"><span class="keyword">false</span></code>. The __lazy<span class="underline">argument</span>_
+            is typically a test that is called to resolve ambiguity in the grammar.
+            A parse failure will be reported when the __lazy<span class="underline">argument</span>_
+            result evaluates to <code class="computeroutput"><span class="keyword">false</span></code>.
+            Otherwise an empty match will be reported. The general form is:
+          </p>
+<pre class="programlisting"><span class="identifier">eps_p</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">rest</span><span class="special">;</span>
+</pre>
+<p>
+            The __lazy<span class="underline">argument</span>_ <code class="computeroutput"><span class="identifier">f</span></code> is called to do a semantic test (say,
+            checking if a symbol is in the symbol table). If test returns true,
+            <code class="computeroutput"><span class="identifier">rest</span></code> will be evaluated.
+            Otherwise, the production will return early with a no-match without ever
+            touching rest.
+          </p>
+<a name="spirit.qi.reference.auxiliary.eps.header"></a><h6>
+<a name="id646019"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eps.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_eps</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.eps.namespace"></a><h6>
+<a name="id646093"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">eps</span> <span class="comment">// alias:
+                    boost::spirit::qi::eps</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eps.model_of"></a><h6>
+<a name="id646171"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+                A __lazy<span class="underline">argument</span>_ that evaluates
+                <code class="computeroutput"><span class="keyword">bool</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.auxiliary.eps.expression_semantics"></a><h6>
+<a name="id646242"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match an empty string (always matches).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If <code class="computeroutput"><span class="identifier">f</span></code> evaluates
+                    to <code class="computeroutput"><span class="keyword">true</span></code>, return
+                    a zero length match.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eps.attributes"></a><h6>
+<a name="id646375"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">eps</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.eps.complexity"></a><h6>
+<a name="id646453"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                For plain (<code class="computeroutput"><span class="identifier">eps</span></code>) the
+                complexity is O(1). For Semantic predicates (<code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>) the complexity is defined by the
+                function <code class="computeroutput"><span class="identifier">f</span></code>.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.auxiliary.eps.example"></a><h6>
+<a name="id647603"></a>
+            <a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">eps</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Basic <code class="computeroutput"><span class="identifier">eps</span></code>:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">""</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">);</span> <span class="comment">// always matches
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              This example simulates the "classic" <code class="computeroutput"><span class="identifier">if_p</span></code>
+              parser. Here, <code class="computeroutput"><span class="identifier">int_</span></code>
+              will be tried only if the condition, <code class="computeroutput"><span class="identifier">c</span></code>,
+              is true.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">c</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span> <span class="comment">// a flag
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1234"</span><span class="special">,</span> <span class="identifier">eps</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">true</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              This example simulates the "classic" <code class="computeroutput"><span class="identifier">while_p</span></code>
+              parser. Here, the kleene loop will exit once the condition, c, becomes
+              true. Notice that the condition, <code class="computeroutput"><span class="identifier">c</span><span class="special">,</span> <span class="identifier">is</span> <span class="identifier">turned</span> <span class="identifier">to</span>
+              </code>false<code class="computeroutput"> <span class="identifier">when</span> <span class="identifier">we</span> <span class="identifier">get</span>
+              <span class="identifier">to</span> <span class="identifier">parse</span>
+              </code>4`.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_phrase_parser</span><span class="special">(</span><span class="string">"1 2 3 4"</span><span class="special">,</span> 
+    <span class="special">*(</span><span class="identifier">eps</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">==</span> <span class="keyword">true</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">_1</span> <span class="special">==</span> <span class="number">4</span><span class="special">)]));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eoi.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lazy.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,277 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Lazy (lazy)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../auxiliary.html" title="Auxiliary">
+<link rel="prev" href="eps.html" title="Epsilon (eps)">
+<link rel="next" href="../binary.html" title="Binary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eps.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Lazy (lazy)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.auxiliary.lazy"></a><a class="link" href="lazy.html" title="Lazy (lazy)"> Lazy (<code class="computeroutput"><span class="identifier">lazy</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.auxiliary.lazy.description"></a><h6>
+<a name="id648167"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">lazy</span></code> parser, as its
+            name suggests, invokes a lazy Phoenix
+            function that returns a parser at parse time. This parser will be used
+            once it is created to continue the parse.
+          </p>
+<a name="spirit.qi.reference.auxiliary.lazy.header"></a><h6>
+<a name="id648197"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/lazy.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_lazy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.lazy.namespace"></a><h6>
+<a name="id648272"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lazy</span> <span class="comment">// alias:
+                    boost::spirit::qi::lazy</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.lazy.model_of"></a><h6>
+<a name="id648350"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fp</span></code></span></dt>
+<dd><p>
+                A __lazy<span class="underline">argument</span>_ that evaluates
+                to a <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.auxiliary.lazy.expression_semantics"></a><h6>
+<a name="id648423"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">fp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a lazy-parser from a __lazy<span class="underline">argument</span>_,
+                    <code class="computeroutput"><span class="identifier">fp</span></code>. <code class="computeroutput"><span class="identifier">fp</span></code> will be invoked at parse
+                    time. <code class="computeroutput"><span class="identifier">fp</span></code> is expected
+                    to return a <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a> object. This
+                    parser is then invoked in order to parse the input.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fp</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a lazy-parser from a __lazy<span class="underline">argument</span>_,
+                    <code class="computeroutput"><span class="identifier">fp</span></code>. <code class="computeroutput"><span class="identifier">fp</span></code> will be invoked at parse
+                    time. <code class="computeroutput"><span class="identifier">fp</span></code> is expected
+                    to return a <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a> object. This
+                    parser is then invoked in order to parse the input.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.lazy.attributes"></a><h6>
+<a name="id648614"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">fp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The attribute type of the return type of <code class="computeroutput"><span class="identifier">fp</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fp</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The attribute type of the return type of <code class="computeroutput"><span class="identifier">fp</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.auxiliary.lazy.complexity"></a><h6>
+<a name="id648736"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.complexity">Complexity</a>
+          </h6>
+<p>
+            The complexity of the <code class="computeroutput"><span class="identifier">lazy</span></code>
+            parser is determined by the complexity of the parser returned from <code class="computeroutput"><span class="identifier">fp</span></code>.
+          </p>
+<a name="spirit.qi.reference.auxiliary.lazy.example"></a><h6>
+<a name="id648767"></a>
+            <a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lazy</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Using <code class="computeroutput"><span class="identifier">lazy</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              Here, the phoenix::val expression creates a function that returns its
+              argument when invoked. The lazy expression defers the invocation of
+              this function at parse time. Then, this parser (string parser) is called
+              into action. All this takes place at parse time.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">,</span> <span class="identifier">lazy</span><span class="special">(</span><span class="identifier">val</span><span class="special">(</span><span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">))));</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              The above is equivalent to:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">,</span> <span class="identifier">val</span><span class="special">(</span><span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="eps.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../auxiliary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../binary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,408 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Basics</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="parser_concepts/naryparser.html" title="NaryParser">
+<link rel="next" href="auxiliary.html" title="Auxiliary">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parser_concepts/naryparser.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Basics">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.basics"></a><a class="link" href="basics.html" title="Basics">Basics</a>
+</h4></div></div></div>
+<a name="spirit.qi.reference.basics.lazy_argument"></a><h6>
+<a name="id638975"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.lazy_argument">Lazy Argument</a>
+        </h6>
+<p>
+          Some parsers (e.g. primitives and non-terminals) may take in additional
+          attributes. Such parsers take the form:
+        </p>
+<pre class="programlisting"><span class="identifier">p</span><span class="special">(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,...</span> <span class="identifier">aN</span><span class="special">)</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">p</span></code> is a parser. Each
+          of the arguments (a1...aN) can either be an immediate value, or a function,
+          <code class="computeroutput"><span class="identifier">f</span></code>, with signature:
+        </p>
+<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">T</span></code>, the function's
+          return value, is compatible with the argument type expected and <code class="computeroutput"><span class="identifier">Context</span></code> is the parser's Context type
+          (The first argument is <code class="computeroutput"><span class="identifier">unused</span></code>
+          to make the <code class="computeroutput"><span class="identifier">Context</span></code> the
+          second argument. This is done for uniformity with Semantic Actions).
+        </p>
+<a name="spirit.qi.reference.basics.character_encoding_namespace"></a><h6>
+<a name="id639112"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+          Encoding Namespace</a>
+        </h6>
+<p>
+          Some parsers need to know which character set a <code class="computeroutput"><span class="keyword">char</span></code>
+          or <code class="computeroutput"><span class="keyword">wchar_t</span></code> is operating on.
+          For example, the <code class="computeroutput"><span class="identifier">alnum</span></code>
+          parser works differently with ISO8859.1 and ASCII encodings. Where necessary,
+          Spirit encodes (tags) the parser with the character set.
+        </p>
+<p>
+          We have a namespace for each character set Spirit will be supporting. That
+          includes <code class="computeroutput"><span class="identifier">ascii</span></code>, <code class="computeroutput"><span class="identifier">iso8859_1</span></code>, <code class="computeroutput"><span class="identifier">standard</span></code>
+          and <code class="computeroutput"><span class="identifier">standard_wide</span></code> (and
+          in the future, <code class="computeroutput"><span class="identifier">unicode</span></code>).
+          In each of the character encoding namespaces, we place tagged versions
+          of parsers such as <code class="computeroutput"><span class="identifier">alnum</span></code>,
+          <code class="computeroutput"><span class="identifier">space</span></code> etc.
+        </p>
+<p>
+          Example:
+        </p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span> <span class="comment">// use the ASCII space parser
+</span></pre>
+<p>
+          Namespaces:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::standard
+          </li>
+<li class="listitem">
+            boost::spirit::standard_wide
+          </li>
+</ul></div>
+<p>
+          For ease of use, the components in this namespaces are also brought into
+          the qi sub-namespaces with the same names:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            boost::spirit::qi::ascii
+          </li>
+<li class="listitem">
+            boost::spirit::qi::iso8859_1
+          </li>
+<li class="listitem">
+            boost::spirit::qi::standard
+          </li>
+<li class="listitem">
+            boost::spirit::qi::standard_wide
+          </li>
+</ul></div>
+<a name="spirit.qi.reference.basics.examples"></a><h6>
+<a name="id639295"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.examples">Examples</a>
+        </h6>
+<p>
+          All sections in the reference present some real world examples. The examples
+          use a common test harness to keep the example code as minimal and direct
+          to the point as possible. The test harness is presented below.
+        </p>
+<p>
+          Some includes:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">cstdlib</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Our test functions:
+        </p>
+<p>
+          These functions test the parsers without attributes.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_parser</span><span class="special">(</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">full_match</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">;</span>
+
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">f</span> <span class="special">+</span> <span class="identifier">strlen</span><span class="special">(</span><span class="identifier">f</span><span class="special">));</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">p</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(!</span><span class="identifier">full_match</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">f</span> <span class="special">==</span> <span class="identifier">l</span><span class="special">)))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_phrase_parser</span><span class="special">(</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">full_match</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+    
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">f</span> <span class="special">+</span> <span class="identifier">strlen</span><span class="special">(</span><span class="identifier">f</span><span class="special">));</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">space</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(!</span><span class="identifier">full_match</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">f</span> <span class="special">==</span> <span class="identifier">l</span><span class="special">)))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          These functions test the parsers with user supplied attributes.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_parser_attr</span><span class="special">(</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">full_match</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">;</span>
+
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">f</span> <span class="special">+</span> <span class="identifier">strlen</span><span class="special">(</span><span class="identifier">f</span><span class="special">));</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(!</span><span class="identifier">full_match</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">f</span> <span class="special">==</span> <span class="identifier">l</span><span class="special">)))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">test_phrase_parser_attr</span><span class="special">(</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">full_match</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+    <span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">l</span><span class="special">(</span><span class="identifier">f</span> <span class="special">+</span> <span class="identifier">strlen</span><span class="special">(</span><span class="identifier">f</span><span class="special">));</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">space</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span> <span class="special">&&</span> <span class="special">(!</span><span class="identifier">full_match</span> <span class="special">||</span> <span class="special">(</span><span class="identifier">f</span> <span class="special">==</span> <span class="identifier">l</span><span class="special">)))</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"ok"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">else</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"fail"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The <code class="computeroutput"><span class="identifier">print_info</span></code> utility
+          function prints information contained in the <code class="computeroutput"><span class="identifier">info</span></code>
+          class.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">printer</span>
+<span class="special">{</span>
+    <span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">utf8_string</span> <span class="identifier">string</span><span class="special">;</span>
+
+    <span class="keyword">void</span> <span class="identifier">element</span><span class="special">(</span><span class="identifier">string</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">tag</span><span class="special">,</span> <span class="identifier">string</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">depth</span><span class="special">)</span> <span class="keyword">const</span>
+    <span class="special">{</span>
+        <span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="special">(</span><span class="identifier">depth</span><span class="special">*</span><span class="number">4</span><span class="special">);</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="comment">// indent to depth
+</span>            <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span>
+
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"tag: "</span> <span class="special"><<</span> <span class="identifier">tag</span><span class="special">;</span>
+        <span class="keyword">if</span> <span class="special">(</span><span class="identifier">value</span> <span class="special">!=</span> <span class="string">""</span><span class="special">)</span>
+            <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">", value: "</span> <span class="special"><<</span> <span class="identifier">value</span><span class="special">;</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">void</span> <span class="identifier">print_info</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">info</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">what</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">basic_info_walker</span><span class="special">;</span>
+
+    <span class="identifier">printer</span> <span class="identifier">pr</span><span class="special">;</span>
+    <span class="identifier">basic_info_walker</span><span class="special"><</span><span class="identifier">printer</span><span class="special">></span> <span class="identifier">walker</span><span class="special">(</span><span class="identifier">pr</span><span class="special">,</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">tag</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span>
+    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">apply_visitor</span><span class="special">(</span><span class="identifier">walker</span><span class="special">,</span> <span class="identifier">what</span><span class="special">.</span><span class="identifier">value</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.qi.reference.basics.string"></a><h6>
+<a name="id641869"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.string">String</a>
+        </h6>
+<a name="spirit.qi.reference.basics.header"></a><h6>
+<a name="id641882"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.header">Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/support/string_traits.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">support_string_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          A string can be any object <code class="computeroutput"><span class="identifier">s</span></code>,
+          of type, <code class="computeroutput"><span class="identifier">S</span></code>, that satisfies
+          the following expression traits:
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_string</span><span class="special"><</span><span class="identifier">S</span><span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                  if a certain type, <code class="computeroutput"><span class="identifier">S</span></code>
+                  is a string, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                  otherwise (See <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                  Boolean Constant</a>).
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">char_type_of</span><span class="special"><</span><span class="identifier">S</span><span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Metafunction that returns the underlying char type of a string
+                  type, <code class="computeroutput"><span class="identifier">S</span></code>.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">get_c_string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Function that returns the underlying raw C-string from <code class="computeroutput"><span class="identifier">s</span></code>.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">get_begin</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Function that returns an STL
+                  iterator from <code class="computeroutput"><span class="identifier">s</span></code>
+                  that points to the beginning the string.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">get_end</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Function that returns an STL
+                  iterator from <code class="computeroutput"><span class="identifier">s</span></code>
+                  that points to the end of the string.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.basics.models"></a><h6>
+<a name="id642355"></a>
+          <a class="link" href="basics.html#spirit.qi.reference.basics.models">Models</a>
+        </h6>
+<p>
+          Predefined models include:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            any literal string, e.g. "Hello, World",
+          </li>
+<li class="listitem">
+            a pointer/reference to a null-terminated array of characters
+          </li>
+<li class="listitem">
+            a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">Char</span><span class="special">></span></code>
+</li>
+</ul></div>
+<p>
+          The namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code> is open for users to provide their
+          own specializations.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parser_concepts/naryparser.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="auxiliary.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="auxiliary/lazy.html" title="Lazy (lazy)">
+<link rel="next" href="binary/binary_native.html" title="Binary Native Endian">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary/lazy.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary/binary_native.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.binary"></a><a class="link" href="binary.html" title="Binary"> Binary</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="binary/binary_native.html"> Binary
+          Native Endian</a></span></dt>
+<dt><span class="section"><a href="binary/binary_little.html"> Binary
+          Little Endian</a></span></dt>
+<dt><span class="section"><a href="binary/binary_big.html"> Binary Big
+          Endian</a></span></dt>
+</dl></div>
+<p>
+          This module includes different parsers for parsing binary data in various
+          endianness.
+          It includes parsers for default (native), little, and big endian binary
+          input.
+        </p>
+<a name="spirit.qi.reference.binary.module_header"></a><h6>
+<a name="id649031"></a>
+          <a class="link" href="binary.html#spirit.qi.reference.binary.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="auxiliary/lazy.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary/binary_native.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,403 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Big Endian</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="binary_little.html" title="Binary Little Endian">
+<link rel="next" href="../char.html" title="Char">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_little.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../char.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Big Endian">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.binary.binary_big"></a><a class="link" href="binary_big.html" title="Binary Big Endian"> Binary Big
+          Endian</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.binary.binary_big.description"></a><h6>
+<a name="id656140"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.description">Description</a>
+          </h6>
+<p>
+            Binary big endian parsers are designed to parse binary byte streams that
+            are laid out in big endian.
+          </p>
+<a name="spirit.qi.reference.binary.binary_big.header"></a><h6>
+<a name="id656157"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.binary.binary_big.namespace"></a><h6>
+<a name="id656232"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_word</span> <span class="comment">//
+                    alias: boost::spirit::qi::big_word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_dword</span> <span class="comment">//
+                    alias: boost::spirit::qi::big_dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">big_qword</span> <span class="comment">//
+                    alias: boost::spirit::qi::big_qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">big_qword</span></code> is only available
+              on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code>
+              is defined (i.e. on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+              <span class="keyword">long</span></code> (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_big.model_of"></a><h6>
+<a name="id656426"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 32 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 64 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.binary.binary_big.expression_semantics"></a><h6>
+<a name="id656538"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 16 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 32 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 64 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 16 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 32 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 32 bit big endian binary.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_big.attributes"></a><h6>
+<a name="id656776"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">big_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_big.complexity"></a><h6>
+<a name="id657064"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes parsed
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.binary.binary_big.example"></a><h6>
+<a name="id657088"></a>
+            <a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Using declarations and variables:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">big_word</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">big_dword</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">big_qword</span><span class="special">;</span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint8_t</span> <span class="identifier">uc</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint16_t</span> <span class="identifier">us</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span> <span class="identifier">ui</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">ul</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Basic usage of the big endian binary parsers:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">big_word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span>  <span class="number">0x0102</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">big_dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x01020304</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">big_qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">);</span>
+
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">big_word</span><span class="special">(</span><span class="number">0x0102</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">big_dword</span><span class="special">(</span><span class="number">0x01020304</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
+    <span class="identifier">big_qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_little.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../char.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,404 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Little Endian</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="binary_native.html" title="Binary Native Endian">
+<link rel="next" href="binary_big.html" title="Binary Big Endian">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_native.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_big.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Little Endian">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.binary.binary_little"></a><a class="link" href="binary_little.html" title="Binary Little Endian"> Binary
+          Little Endian</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.binary.binary_little.description"></a><h6>
+<a name="id651883"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.description">Description</a>
+          </h6>
+<p>
+            Binary little endian parsers are designed to parse binary byte streams
+            that are laid out in little endian.
+          </p>
+<a name="spirit.qi.reference.binary.binary_little.header"></a><h6>
+<a name="id651900"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.binary.binary_little.namespace"></a><h6>
+<a name="id651974"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_word</span> <span class="comment">//
+                    alias: boost::spirit::qi::little_word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_dword</span> <span class="comment">//
+                    alias: boost::spirit::qi::little_dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">little_qword</span> <span class="comment">//
+                    alias: boost::spirit::qi::little_qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">little_qword</span></code> is only
+              available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_little.model_of"></a><h6>
+<a name="id652168"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 32 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 64 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.binary.binary_little.expression_semantics"></a><h6>
+<a name="id652280"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 16 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 32 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 64 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 16 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 32 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 32 bit little endian binary.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_little.attributes"></a><h6>
+<a name="id652519"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">little_qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_little.complexity"></a><h6>
+<a name="id655606"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes parsed
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.binary.binary_little.example"></a><h6>
+<a name="id655630"></a>
+            <a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Using declarations and variables:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">little_word</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">little_dword</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">little_qword</span><span class="special">;</span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint8_t</span> <span class="identifier">uc</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint16_t</span> <span class="identifier">us</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span> <span class="identifier">ui</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">ul</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Basic usage of the little endian binary parsers:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">little_word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">little_dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">little_qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ul</span> <span class="special">==</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">little_word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">little_dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
+    <span class="identifier">little_qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_native.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_big.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,491 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Binary Native Endian</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../binary.html" title="Binary">
+<link rel="prev" href="../binary.html" title="Binary">
+<link rel="next" href="binary_little.html" title="Binary Little Endian">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_little.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Binary Native Endian">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.binary.binary_native"></a><a class="link" href="binary_native.html" title="Binary Native Endian"> Binary
+          Native Endian</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.binary.binary_native.description"></a><h6>
+<a name="id649115"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.description">Description</a>
+          </h6>
+<p>
+            Binary native endian parsers are designed to parse binary byte streams
+            that are laid out in the native endianness
+            of the target architecture.
+          </p>
+<a name="spirit.qi.reference.binary.binary_native.header"></a><h6>
+<a name="id649137"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_binary</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.binary.binary_native.namespace"></a><h6>
+<a name="id649211"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">byte_</span> <span class="comment">// alias:
+                    boost::spirit::qi::byte_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">word</span> <span class="comment">// alias:
+                    boost::spirit::qi::word</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">dword</span> <span class="comment">// alias:
+                    boost::spirit::qi::dword</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qword</span> <span class="comment">// alias:
+                    boost::spirit::qi::qword</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">qword</span></code> is only available
+              on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code>
+              is defined (i.e. on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
+              <span class="keyword">long</span></code> (64 bit) integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_native.model_of"></a><h6>
+<a name="id649439"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A single byte (8 bit binary value) or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a single byte. This value is always
+                in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">w</span></code></span></dt>
+<dd><p>
+                A 16 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 16 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dw</span></code></span></dt>
+<dd><p>
+                A 32 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 32 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">qw</span></code></span></dt>
+<dd><p>
+                A 64 bit binary value or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+                Argument</a> that evaluates to a 64 bit binary value. This value
+                is always in native endian.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.binary.binary_native.expression_semantics"></a><h6>
+<a name="id649575"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 8 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 16 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 32 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches any 64 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 8 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 16 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 32 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches an exact 64 bit native endian binary.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_native.attributes"></a><h6>
+<a name="id650493"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least8_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least16_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least32_t</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint_least64_t</span></code>)
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">byte_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">word</span><span class="special">(</span><span class="identifier">w</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">dword</span><span class="special">(</span><span class="identifier">dw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">qword</span><span class="special">(</span><span class="identifier">qw</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.binary.binary_native.complexity"></a><h6>
+<a name="id650862"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of bytes parsed
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.binary.binary_native.example"></a><h6>
+<a name="id650886"></a>
+            <a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Using declarations and variables:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">byte_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">word</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">dword</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">qword</span><span class="special">;</span>
+
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint8_t</span> <span class="identifier">uc</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint16_t</span> <span class="identifier">us</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span> <span class="identifier">ui</span><span class="special">;</span>
+<span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">ul</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Basic usage of the native binary parsers for little endian platforms:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="identifier">uc</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">uc</span> <span class="special">==</span> <span class="number">0x01</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span> <span class="number">0x0201</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x04030201</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ul</span> <span class="special">==</span> <span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">);</span>
+
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0201</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x04030201</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
+    <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0807060504030201LL</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Basic usage of the native binary parsers for big endian platforms:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">,</span> <span class="identifier">uc</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">uc</span> <span class="special">==</span> <span class="number">0x01</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">,</span> <span class="identifier">us</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">us</span> <span class="special">==</span>  <span class="number">0x0102</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">,</span> <span class="identifier">ui</span><span class="special">);</span> <span class="identifier">assert</span><span class="special">(</span><span class="identifier">ui</span> <span class="special">==</span> <span class="number">0x01020304</span><span class="special">);</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span> <span class="identifier">qword</span><span class="special">,</span> <span class="identifier">ul</span><span class="special">);</span>
+<span class="identifier">assert</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">);</span>
+
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01"</span><span class="special">,</span> <span class="identifier">byte_</span><span class="special">(</span><span class="number">0x01</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02"</span><span class="special">,</span> <span class="identifier">word</span><span class="special">(</span><span class="number">0x0102</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04"</span><span class="special">,</span> <span class="identifier">dword</span><span class="special">(</span><span class="number">0x01020304</span><span class="special">));</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"\x01\x02\x03\x04\x05\x06\x07\x08"</span><span class="special">,</span>
+    <span class="identifier">qword</span><span class="special">(</span><span class="number">0</span><span class="identifier">x0102030405060708LL</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../binary.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binary_little.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Char</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary/binary_big.html" title="Binary Big Endian">
+<link rel="next" href="char/char.html" title="Char (char_, lit)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary/binary_big.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Char">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.char"></a><a class="link" href="char.html" title="Char">Char</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> Char (char_, lit)</span></dt>
+<dt><span class="section"><a href="char/char_class.html"> Char Classification
+          (<code class="computeroutput"><span class="identifier">alnum</span></code>, <code class="computeroutput"><span class="identifier">digit</span></code>,
+          etc.)</a></span></dt>
+</dl></div>
+<p>
+          This module includes parsers for single characters. Currently, this module
+          includes literal chars (e.g. <code class="computeroutput"><span class="char">'x'</span></code>,
+          <code class="computeroutput"><span class="identifier">L</span><span class="char">'x'</span></code>),
+          <code class="computeroutput"><span class="identifier">char_</span></code> (single characters,
+          ranges and character sets) and the encoding specific character classifiers
+          (<code class="computeroutput"><span class="identifier">alnum</span></code>, <code class="computeroutput"><span class="identifier">alpha</span></code>,
+          <code class="computeroutput"><span class="identifier">digit</span></code>, <code class="computeroutput"><span class="identifier">xdigit</span></code>,
+          etc.).
+        </p>
+<a name="spirit.qi.reference.char.module_header"></a><h6>
+<a name="id657785"></a>
+          <a class="link" href="char.html#spirit.qi.reference.char.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary/binary_big.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,608 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Char (char_, lit)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../char.html" title="Char">
+<link rel="prev" href="../char.html" title="Char">
+<link rel="next" href="char_class.html" title="Char Classification (alnum, digit, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char_class.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Char (char_, lit)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.char.char"></a><a class="link" href="char.html" title="Char (char_, lit)"> Char (<code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.char.char.description"></a><h6>
+<a name="id657883"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">char_</span></code> parser matches
+            single characters. The <code class="computeroutput"><span class="identifier">char_</span></code>
+            parser has an associated <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as inhibiting case sensitivity and dealing with character ranges.
+          </p>
+<p>
+            There are various forms of <code class="computeroutput"><span class="identifier">char_</span></code>.
+          </p>
+<a name="spirit.qi.reference.char.char.char_"></a><h6>
+<a name="id657930"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.char_">char_</a>
+          </h6>
+<p>
+            The no argument form of <code class="computeroutput"><span class="identifier">char_</span></code>
+            matches any character in the assocaiated <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span>               <span class="comment">// matches any character
+</span></pre>
+<a name="spirit.qi.reference.char.char.char__ch_"></a><h6>
+<a name="id657971"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.char__ch_">char_(ch)</a>
+          </h6>
+<p>
+            The single argument form of <code class="computeroutput"><span class="identifier">char_</span></code>
+            (with a character argument) matches the supplied character.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">)</span>          <span class="comment">// matches 'x'
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">L</span><span class="char">'x'</span><span class="special">)</span>         <span class="comment">// matches L'x'
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span>            <span class="comment">// matches x (a char)
+</span></pre>
+<a name="spirit.qi.reference.char.char.char__first__last_"></a><h6>
+<a name="id658059"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.char__first__last_">char_(first,
+            last)</a>
+          </h6>
+<p>
+            <code class="computeroutput"><span class="identifier">char_</span></code> with two arguments,
+            matches a range of characters.
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">,</span><span class="char">'z'</span><span class="special">)</span>      <span class="comment">// alphabetic characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">L</span><span class="char">'0'</span><span class="special">,</span><span class="identifier">L</span><span class="char">'9'</span><span class="special">)</span>    <span class="comment">// digits
+</span></pre>
+<p>
+            A range of characters is created from a low-high character pair. Such
+            a parser matches a single character that is in the range, including both
+            endpoints. Note, the first character must be <span class="emphasis"><em>before</em></span>
+            the second, according to the underlying <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<p>
+            Character mapping is inherently platform dependent. It is not guaranteed
+            in the standard for example that <code class="computeroutput"><span class="char">'A'</span>
+            <span class="special"><</span> <span class="char">'Z'</span></code>,
+            that is why in Spirit2, we purposely attach a specific <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a> (such as ASCII, ISO-8859-1) to the <code class="computeroutput"><span class="identifier">char_</span></code> parser to eliminate such ambiguities.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+              <span class="bold"><strong>Sparse bit vectors</strong></span>
+            </p>
+<p>
+              To accomodate 16/32 and 64 bit characters, the char-set statically
+              switches from a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bitset</span></code>
+              implementation when the character type is not greater than 8 bits,
+              to a sparse bit/boolean set which uses a sorted vector of disjoint
+              ranges (<code class="computeroutput"><span class="identifier">range_run</span></code>).
+              The set is constructed from ranges such that adjacent or overlapping
+              ranges are coalesced.
+            </p>
+<p>
+              <code class="computeroutput"><span class="identifier">range_runs</span></code> are very
+              space-economical in situations where there are lots of ranges and a
+              few individual disjoint values. Searching is O(log n) where n is the
+              number of ranges.
+            </p>
+</td></tr>
+</table></div>
+<a name="spirit.qi.reference.char.char.char__def_"></a><h6>
+<a name="id658239"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.char__def_">char_(def)</a>
+          </h6>
+<p>
+            Lastly, when given a string (a plain C string, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>,
+            etc.), the string is regarded as a char-set definition string following
+            a syntax that resembles posix style regular expression character sets
+            (except that double quotes delimit the set elements instead of square
+            brackets and there is no special negation ^ character). Examples:
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-zA-Z"</span><span class="special">)</span>     <span class="comment">// alphabetic characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"0-9a-fA-F"</span><span class="special">)</span>  <span class="comment">// hexadecimal characters
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"actgACTG"</span><span class="special">)</span>   <span class="comment">// DNA identifiers
+</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"\x7f\x7e"</span><span class="special">)</span>   <span class="comment">// Hexadecimal 0x7F and 0x7E
+</span></pre>
+<a name="spirit.qi.reference.char.char.lit_ch_"></a><h6>
+<a name="id658352"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.lit_ch_">lit(ch)</a>
+          </h6>
+<p>
+            <code class="computeroutput"><span class="identifier">lit</span></code>, when passed a single
+            character, behaves like the single argument <code class="computeroutput"><span class="identifier">char_</span></code>
+            except that <code class="computeroutput"><span class="identifier">lit</span></code> does
+            not synthesize an attribute. A plain <code class="computeroutput"><span class="keyword">char</span></code>
+            or <code class="computeroutput"><span class="keyword">wchar_t</span></code> is equivalent
+            to a <code class="computeroutput"><span class="identifier">lit</span></code>.
+          </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">lit</span></code> is reused by both
+              the <a class="link" href="../string/string.html" title="String (string, lit)">string parsers</a>
+              and the char parsers. In general, a char parser is created when you
+              pass in a character and a string parser is created when you pass in
+              a string. The exception is when you pass a single element literal string,
+              e.g. <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"x"</span><span class="special">)</span></code>.
+              In this case, we optimize this to create a char parser instead of a
+              string parser.
+            </p></td></tr>
+</table></div>
+<p>
+            Examples:
+          </p>
+<pre class="programlisting"><span class="char">'x'</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="char">'x'</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">L</span><span class="char">'x'</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="comment">// c is a char
+</span></pre>
+<a name="spirit.qi.reference.char.char.header"></a><h6>
+<a name="id658515"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char/char.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">qi_char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.char.char.namespace"></a><h6>
+<a name="id658583"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::qi::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.qi.reference.char.char.model_of"></a><h6>
+<a name="id658701"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">c</span></code>,
+            <code class="computeroutput"><span class="identifier">f</span></code>, <code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                A literal char, e.g. <code class="computeroutput"><span class="char">'x'</span></code>,
+                <code class="computeroutput"><span class="identifier">L</span><span class="char">'x'</span></code>
+                or anything that can be converted to a <code class="computeroutput"><span class="keyword">char</span></code>
+                or <code class="computeroutput"><span class="keyword">wchar_t</span></code>, or a __lazy<span class="underline">argument</span>_ that evaluates to anything
+                that can be converted to a <code class="computeroutput"><span class="keyword">char</span></code>
+                or <code class="computeroutput"><span class="keyword">wchar_t</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cs</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.string">String</a>
+                or a __lazy<span class="underline">argument</span>_ that evaluates
+                to a <a class="link" href="../basics.html#spirit.qi.reference.basics.string">String</a>
+                that specifies a char-set definition string following a syntax that
+                resembles posix style regular expression character sets (except the
+                square brackets and the negation <code class="computeroutput"><span class="special">^</span></code>
+                character).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">cp</span></code></span></dt>
+<dd><p>
+                A char parser, a char range parser or a char set parser.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.char.char.expression_semantics"></a><h6>
+<a name="id658908"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">c</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create char parser from a char, <code class="computeroutput"><span class="identifier">c</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a char parser from a char, <code class="computeroutput"><span class="identifier">c</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a char parser that matches any character in the <code class="computeroutput"><span class="identifier">ns</span></code> encoding.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a char parser with <code class="computeroutput"><span class="identifier">ns</span></code>
+                    encoding from a char, <code class="computeroutput"><span class="identifier">c</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a char-range parser that matches characters from range
+                    (<code class="computeroutput"><span class="identifier">f</span></code> to <code class="computeroutput"><span class="identifier">l</span></code>, inclusive) with <code class="computeroutput"><span class="identifier">ns</span></code> encoding.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">cs</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a char-set parser with <code class="computeroutput"><span class="identifier">ns</span></code>
+                    encoding from a char-set definition string, <code class="computeroutput"><span class="identifier">cs</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">~</span><span class="identifier">cp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Negate <code class="computeroutput"><span class="identifier">cp</span></code>. The
+                    result is a negated char parser that matches any character in
+                    the <code class="computeroutput"><span class="identifier">ns</span></code> encoding
+                    except the characters matched by <code class="computeroutput"><span class="identifier">cp</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.char.char.attributes"></a><h6>
+<a name="id659315"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">c</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code> or if
+                    <code class="computeroutput"><span class="identifier">c</span></code> is a __lazy<span class="underline">argument</span>_, the character type returned
+                    by invoking it.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code> or if
+                    <code class="computeroutput"><span class="identifier">c</span></code> is a __lazy<span class="underline">argument</span>_, the character type returned
+                    by invoking it.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type of the <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type of the <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type of the <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">cs</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type of the <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                    Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">~</span><span class="identifier">cp</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The attribute of <code class="computeroutput"><span class="identifier">cp</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.char.char.complexity"></a><h6>
+<a name="id659707"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <span class="bold"><strong>O(N)</strong></span>, except for char-sets with
+                16-bit (or more) characters (e.g. <code class="computeroutput"><span class="keyword">wchar_t</span></code>).
+                These have <span class="bold"><strong>O(log N)</strong></span> complexity,
+                where N is the number of distinct character ranges in the set.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.char.char.example"></a><h6>
+<a name="id659748"></a>
+            <a class="link" href="char.html#spirit.qi.reference.char.char.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic literals:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"x"</span><span class="special">,</span> <span class="char">'x'</span><span class="special">);</span>                      <span class="comment">// plain literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"x"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="char">'x'</span><span class="special">));</span>                 <span class="comment">// explicit literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"x"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">));</span>               <span class="comment">// ascii::char_
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Range:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">ch</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"5"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'0'</span><span class="special">,</span><span class="char">'9'</span><span class="special">),</span> <span class="identifier">ch</span><span class="special">);</span>  <span class="comment">// ascii::char_ range
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">ch</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>               <span class="comment">// prints '5'
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Character set:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"5"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="string">"0-9"</span><span class="special">),</span> <span class="identifier">ch</span><span class="special">);</span>    <span class="comment">// ascii::char_ set
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">ch</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>               <span class="comment">// prints '5'
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Lazy char_ using Phoenix
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>        
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"x"</span><span class="special">,</span> <span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="char">'x'</span><span class="special">));</span>            <span class="comment">// direct
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"5"</span><span class="special">,</span> 
+    <span class="identifier">char_</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="char">'0'</span><span class="special">),</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="char">'9'</span><span class="special">)));</span>    <span class="comment">// ascii::char_ range
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="char_class.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,408 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Char Classification (alnum, digit, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../char.html" title="Char">
+<link rel="prev" href="char.html" title="Char (char_, lit)">
+<link rel="next" href="../directive.html" title="Directive">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Char Classification (alnum, digit, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.char.char_class"></a><a class="link" href="char_class.html" title="Char Classification (alnum, digit, etc.)"> Char Classification
+          (<code class="computeroutput"><span class="identifier">alnum</span></code>, <code class="computeroutput"><span class="identifier">digit</span></code>,
+          etc.)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.char.char_class.description"></a><h6>
+<a name="id661474"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.description">Description</a>
+          </h6>
+<p>
+            The library has the full repertoire of single character parsers for character
+            classification. This includes the usual <code class="computeroutput"><span class="identifier">alnum</span></code>,
+            <code class="computeroutput"><span class="identifier">alpha</span></code>, <code class="computeroutput"><span class="identifier">digit</span></code>, <code class="computeroutput"><span class="identifier">xdigit</span></code>,
+            etc. parsers. These parsers have an associated <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as inhibiting case sensitivity.
+          </p>
+<a name="spirit.qi.reference.char.char_class.header"></a><h6>
+<a name="id661526"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char/char_class.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">qi_char_class</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.char.char_class.namespace"></a><h6>
+<a name="id661593"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alnum</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alpha</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">blank</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">cntrl</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">digit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">graph</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">print</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">punct</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">space</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">xdigit</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.qi.reference.char.char_class.model_of"></a><h6>
+<a name="id661952"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.char.char_class.expression_semantics"></a><h6>
+<a name="id662018"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alnum</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches alpha-numeric characters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">alpha</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches alphabetic characters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">blank</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches spaces or tabs
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">cntrl</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches control characters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">digit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches numeric digits
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">graph</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches non-space printing characters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">lower</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches lower case letters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">print</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches printable characters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">punct</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches punctuation symbols
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">space</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches spaces, tabs, returns, and newlines
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">upper</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches upper case letters
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">xdigit</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Matches hexadecimal digits
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.char.char_class.attributes"></a><h6>
+<a name="id662457"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.attributes">Attributes</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The character type of the <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                Encoding Namespace</a>, <code class="computeroutput"><span class="identifier">ns</span></code>.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.char.char_class.complexity"></a><h6>
+<a name="id662493"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.char.char_class.example"></a><h6>
+<a name="id662517"></a>
+            <a class="link" href="char_class.html#spirit.qi.reference.char.char_class.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alnum</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">blank</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">digit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">lower</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic usage:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1"</span><span class="special">,</span> <span class="identifier">alnum</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">" "</span><span class="special">,</span> <span class="identifier">blank</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1"</span><span class="special">,</span> <span class="identifier">digit</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="identifier">lower</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../char.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../directive.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Directive</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="char/char_class.html" title="Char Classification (alnum, digit, etc.)">
+<link rel="next" href="directive/lexeme.html" title="Inhibiting Skipping (lexeme[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char/char_class.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive/lexeme.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Directive">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.directive"></a><a class="link" href="directive.html" title="Directive"> Directive</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="directive/lexeme.html"> Inhibiting
+          Skipping (<code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/no_case.html"> Inhibiting
+          Case Sensitivity (<code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/omit.html"> Ignoring Attribute
+          (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/raw.html"> Transduction
+          Parsing (<code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/repeat.html"> Repetition
+          (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a></span></dt>
+<dt><span class="section"><a href="directive/skip.html"> Re-Establish
+          Skipping (<code class="computeroutput"><span class="identifier">skip</span><span class="special">[]</span></code>)</a></span></dt>
+</dl></div>
+<p>
+          This module includes different directives usable to augment and parametrize
+          other parsers. It includes the <code class="computeroutput"><span class="identifier">no_case</span></code>,
+          <code class="computeroutput"><span class="identifier">lexeme</span></code>, <code class="computeroutput"><span class="identifier">omit</span></code>,
+          <code class="computeroutput"><span class="identifier">raw</span></code>, and <code class="computeroutput"><span class="identifier">skip</span></code> directives.
+        </p>
+<a name="spirit.qi.reference.directive.module_header"></a><h6>
+<a name="id662846"></a>
+          <a class="link" href="directive.html#spirit.qi.reference.directive.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_directive</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="char/char_class.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="directive/lexeme.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,254 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Inhibiting Skipping (lexeme[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="../directive.html" title="Directive">
+<link rel="next" href="no_case.html" title="Inhibiting Case Sensitivity (no_case[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="no_case.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Inhibiting Skipping (lexeme[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.lexeme"></a><a class="link" href="lexeme.html" title="Inhibiting Skipping (lexeme[])"> Inhibiting
+          Skipping (<code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.lexeme.description"></a><h6>
+<a name="id662940"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>
+            directive turns off white space skipping. At the phrase level, the parser
+            ignores white spaces, possibly including comments. Use <code class="computeroutput"><span class="identifier">lexeme</span></code> in situations where you want
+            to work at the character level instead of the phrase level. Parsers can
+            be made to work at the character level by enclosing the pertinent parts
+            inside the <code class="computeroutput"><span class="identifier">lexeme</span></code> directive.
+            For example, here's a rule that parses integers:
+          </p>
+<pre class="programlisting"><span class="identifier">integer</span> <span class="special">=</span> <span class="identifier">lexeme</span><span class="special">[</span> <span class="special">-(</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'+'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'-'</span><span class="special">)</span> <span class="special">>></span> <span class="special">+</span><span class="identifier">digit</span> <span class="special">];</span>
+</pre>
+<p>
+            The <code class="computeroutput"><span class="identifier">lexeme</span></code> directive
+            instructs its subject parser to work on the character level. Without
+            it, the <code class="computeroutput"><span class="identifier">integer</span></code> rule
+            would have allowed erroneous embedded white spaces in inputs such as
+            <code class="computeroutput"><span class="string">"1 2 345"</span></code> which
+            will be parsed as <code class="computeroutput"><span class="string">"12345"</span></code>.
+          </p>
+<a name="spirit.qi.reference.directive.lexeme.header"></a><h6>
+<a name="id663087"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/lexeme.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_lexeme</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.lexeme.namespace"></a><h6>
+<a name="id663298"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lexeme</span> <span class="comment">// alias:
+                    boost::spirit::qi::lexeme</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.lexeme.model_of"></a><h6>
+<a name="id663376"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.lexeme.expression_semantics"></a><h6>
+<a name="id663447"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Turns off white space skipping for the subject parser, <code class="computeroutput"><span class="identifier">a</span></code> (and all its children).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.lexeme.attributes"></a><h6>
+<a name="id663552"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.lexeme.complexity"></a><h6>
+<a name="id663723"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the subject parser,
+                <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.lexeme.example"></a><h6>
+<a name="id663754"></a>
+            <a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">digit</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Simple usage of <code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              The use of lexeme here will prevent skipping in between the digits
+              and the sign making inputs such as <code class="computeroutput"><span class="string">"1
+              2 345"</span></code> erroneous.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_phrase_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">lexeme</span><span class="special">[</span> <span class="special">-(</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'+'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'-'</span><span class="special">)</span> <span class="special">>></span> <span class="special">+</span><span class="identifier">digit</span> <span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../directive.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="no_case.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,271 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Inhibiting Case Sensitivity (no_case[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="lexeme.html" title="Inhibiting Skipping (lexeme[])">
+<link rel="next" href="omit.html" title="Ignoring Attribute (omit[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexeme.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="omit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Inhibiting Case Sensitivity (no_case[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.no_case"></a><a class="link" href="no_case.html" title="Inhibiting Case Sensitivity (no_case[])"> Inhibiting
+          Case Sensitivity (<code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.no_case.description"></a><h6>
+<a name="id664018"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>
+            directive does not consume any input. The actual matching is done by
+            its subject parser. It's purpose is to force matching of the subject
+            parser (and all its children) to be case insensitive.
+          </p>
+<a name="spirit.qi.reference.directive.no_case.header"></a><h6>
+<a name="id664046"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/no_case.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_no_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.no_case.namespace"></a><h6>
+<a name="id664120"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.qi.reference.directive.no_case.model_of"></a><h6>
+<a name="id664202"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.model_of">Model
+            of</a>
+          </h6>
+<p>
+            The model of <code class="computeroutput"><span class="identifier">no_case</span></code>
+            is the model of its subject parser.
+          </p>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.no_case.expression_semantics"></a><h6>
+<a name="id664287"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in the subject's concept.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Force matching of the subject parser, <code class="computeroutput"><span class="identifier">a</span></code>
+                    (and all its children) to be case insensitive
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.no_case.attributes"></a><h6>
+<a name="id664390"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.no_case.complexity"></a><h6>
+<a name="id664584"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the subject parser,
+                <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.no_case.example"></a><h6>
+<a name="id664615"></a>
+            <a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alnum</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Simple usage of <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"X"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">)]);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"6"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span><span class="identifier">alnum</span><span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            A more sophisticated use case of <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code> in conjunction with a symbol table
+            (see <a class="link" href="../string/symbols.html" title="Symbols (symbols)"><code class="computeroutput"><span class="identifier">symbols</span><span class="special"><</span><span class="identifier">Ch</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span></code></a>
+            for more details):
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">sym</span><span class="special">;</span>
+
+<span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
+    <span class="special">(</span><span class="string">"apple"</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>    <span class="comment">// symbol strings are added in lowercase...
+</span>    <span class="special">(</span><span class="string">"banana"</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span>
+    <span class="special">(</span><span class="string">"orange"</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
+<span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="comment">// ...because sym is used for case-insensitive parsing
+</span><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Apple"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"ORANGE"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lexeme.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="omit.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,229 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Ignoring Attribute (omit[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="no_case.html" title="Inhibiting Case Sensitivity (no_case[])">
+<link rel="next" href="raw.html" title="Transduction Parsing (raw[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="no_case.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="raw.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Ignoring Attribute (omit[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.omit"></a><a class="link" href="omit.html" title="Ignoring Attribute (omit[])"> Ignoring Attribute
+          (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.omit.description"></a><h6>
+<a name="id665252"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>
+            ignores the attribute of its subject parser replacing it with <code class="computeroutput"><span class="identifier">unused</span></code>.
+          </p>
+<a name="spirit.qi.reference.directive.omit.header"></a><h6>
+<a name="id665287"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/omit.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_omit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.omit.namespace"></a><h6>
+<a name="id665361"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">omit</span> <span class="comment">// alias:
+                    boost::spirit::qi::omit</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.omit.model_of"></a><h6>
+<a name="id665439"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.omit.expression_semantics"></a><h6>
+<a name="id665918"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Ignore the attribute of the subject parser, <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.omit.attributes"></a><h6>
+<a name="id666020"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.omit.complexity"></a><h6>
+<a name="id666108"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the subject parser,
+                <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.omit.example"></a><h6>
+<a name="id666140"></a>
+            <a class="link" href="omit.html#spirit.qi.reference.directive.omit.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">omit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              This parser ignores the first two characters and extracts the succeeding
+              <code class="computeroutput"><span class="keyword">int</span></code>:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"xx345"</span><span class="special">,</span> <span class="identifier">omit</span><span class="special">[</span><span class="identifier">char_</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">]</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// should print 345
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="no_case.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="raw.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,254 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Transduction Parsing (raw[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="omit.html" title="Ignoring Attribute (omit[])">
+<link rel="next" href="repeat.html" title="Repetition (repeat[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="omit.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="repeat.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Transduction Parsing (raw[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.raw"></a><a class="link" href="raw.html" title="Transduction Parsing (raw[])"> Transduction
+          Parsing (<code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.raw.description"></a><h6>
+<a name="id666436"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code>
+            disregards the attribute of its subject parser, instead exposing the
+            half-open range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span></code> pointing to the matched characters from
+            the input stream. The <code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code> directive breings back the classic
+            Spirit transduction (un-attributed) behavior for a subject parser.
+          </p>
+<a name="spirit.qi.reference.directive.raw.header"></a><h6>
+<a name="id666497"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/raw.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_raw</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.raw.namespace"></a><h6>
+<a name="id666572"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">raw</span> <span class="comment">// alias:
+                    boost::spirit::qi::raw</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.raw.model_of"></a><h6>
+<a name="id666650"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iter</span></code></span></dt>
+<dd><p>
+                A ForwardIterator type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.raw.expression_semantics"></a><h6>
+<a name="id666746"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">raw</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Disregard the attribute of the subject parser, <code class="computeroutput"><span class="identifier">a</span></code>. Expose instead the half-open
+                    range <code class="computeroutput"><span class="special">[</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">)</span></code> pointing to the matched characters
+                    from the input stream.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.raw.attributes"></a><h6>
+<a name="id666872"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">raw</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">raw</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="identifier">Iter</span><span class="special">></span> 
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">raw</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              See boost::iterator_range.
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.directive.raw.complexity"></a><h6>
+<a name="id667086"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the subject parser,
+                <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.raw.example"></a><h6>
+<a name="id667118"></a>
+            <a class="link" href="raw.html#spirit.qi.reference.directive.raw.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">raw</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alpha</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alnum</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              This parser matches and extracts C++ identifiers:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">id</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"James007"</span><span class="special">,</span> <span class="identifier">raw</span><span class="special">[(</span><span class="identifier">alpha</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">)</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">alnum</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">)],</span> <span class="identifier">id</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">id</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// should print James007
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="omit.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="repeat.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,445 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Repetition (repeat[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="raw.html" title="Transduction Parsing (raw[])">
+<link rel="next" href="skip.html" title="Re-Establish Skipping (skip[])">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="raw.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="skip.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Repetition (repeat[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.repeat"></a><a class="link" href="repeat.html" title="Repetition (repeat[])"> Repetition
+          (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.repeat.description"></a><h6>
+<a name="id667427"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>
+            provides a more powerful and flexible mechanism for repeating a parser.
+            There are grammars that are impractical and cumbersome, if not impossible,
+            for the basic EBNF iteration syntax (Kleene Star and the Plus) to specify.
+            Examples:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              A file name may have a maximum of 255 characters only.
+            </li>
+<li class="listitem">
+              A specific bitmap file format has exactly 4096 RGB color information.
+            </li>
+<li class="listitem">
+              A 256 bit binary string (1..256 1s or 0s).
+            </li>
+</ul></div>
+<a name="spirit.qi.reference.directive.repeat.header"></a><h6>
+<a name="id667469"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/repeat.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_repeat</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.repeat.namespace"></a><h6>
+<a name="id667544"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">repeat</span> <span class="comment">// alias:
+                    boost::spirit::qi::repeat</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">inf</span> <span class="comment">// alias:
+                    boost::spirit::qi::inf</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.repeat.model_of"></a><h6>
+<a name="id667659"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code>,<code class="computeroutput"><span class="identifier">min</span></code>,<code class="computeroutput"><span class="identifier">max</span></code></span></dt>
+<dd><p>
+                An <code class="computeroutput"><span class="keyword">int</span></code> anything that
+                can be converted to an <code class="computeroutput"><span class="keyword">int</span></code>,
+                or a __lazy<span class="underline">argument</span>_ that evaluates
+                to anything that can be converted to an <code class="computeroutput"><span class="keyword">int</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.repeat.expression_semantics"></a><h6>
+<a name="id667788"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> zero
+                    or more times. Same as Kleene Star.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> exactly
+                    <code class="computeroutput"><span class="identifier">n</span></code> times.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
+                    <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> at least
+                    <code class="computeroutput"><span class="identifier">min</span></code> times and
+                    at most <code class="computeroutput"><span class="identifier">max</span></code> times.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
+                    <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Repeat <code class="computeroutput"><span class="identifier">a</span></code> at least
+                    <code class="computeroutput"><span class="identifier">min</span></code> or more (continuing
+                    until <code class="computeroutput"><span class="identifier">a</span></code> fails
+                    or the input is consumed).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.repeat.attributes"></a><h6>
+<a name="id670283"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
+                    <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
+                    <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.repeat.complexity"></a><h6>
+<a name="id670955"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity is defined by the complexity of its subject
+                parser. The complexity of <code class="computeroutput"><span class="identifier">repeat</span></code>
+                itself is O(N), where N is the number of repetitions to execute.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.repeat.example"></a><h6>
+<a name="id670987"></a>
+            <a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.example">Example</a>
+          </h6>
+<p>
+            Using the repeat directive, we can now write our examples above.
+          </p>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">repeat</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_parser</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              A parser for a file name with a maximum of 255 characters:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"batman.jpeg"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">255</span><span class="special">)[</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-zA-Z_./"</span><span class="special">)]);</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              A parser for a specific bitmap file format which has exactly 4096 RGB
+              color information. (for the purpose of this example, we will be testing
+              only 3 RGB color information.)
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span> <span class="number">6</span><span class="special">></span> <span class="identifier">rgb</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">></span> <span class="identifier">colors</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"ffffff0000003f3f3f"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">3</span><span class="special">)[</span><span class="identifier">rgb</span><span class="special">],</span> <span class="identifier">colors</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> 
+    <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span>
+    <span class="special"><<</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> 
+    <span class="special"><<</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> 
+    <span class="special"><<</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              A 256 bit binary string (1..256 1s or 0s). (For the purpose of this
+              example, we will be testing only 16 bits.)
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1011101011110010"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">16</span><span class="special">)[</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'1'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'0'</span><span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            The Loop parsers can be dynamic. Consider the parsing of a binary file
+            of Pascal-style length prefixed string, where the first byte determines
+            the length of the incoming string. Here's a sample input:
+          </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <span class="inlinemediaobject"><img src="../../../../../../../../images/pascal_string.png" alt="pascal_string"></span>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            </p>
+<p>
+              This trivial example cannot be practically defined in traditional EBNF.
+              Although some EBNF variants allow more powerful repetition constructs
+              other than the Kleene Star, we are still limited to parsing fixed strings.
+              The nature of EBNF forces the repetition factor to be a constant. On
+              the other hand, Spirit allows the repetition factor to be variable
+              at run time. We could write a grammar that accepts the input string
+              above. Example using phoenix:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
+<span class="keyword">int</span> <span class="identifier">n</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x0bHello World"</span><span class="special">,</span> 
+    <span class="identifier">char_</span><span class="special">[</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span> <span class="special">>></span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">))[</span><span class="identifier">char_</span><span class="special">],</span> <span class="identifier">str</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">str</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// will print "11,Hello World"
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="raw.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="skip.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,287 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Re-Establish Skipping (skip[])</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../directive.html" title="Directive">
+<link rel="prev" href="repeat.html" title="Repetition (repeat[])">
+<link rel="next" href="../numeric.html" title="Numeric">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repeat.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Re-Establish Skipping (skip[])">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.directive.skip"></a><a class="link" href="skip.html" title="Re-Establish Skipping (skip[])"> Re-Establish
+          Skipping (<code class="computeroutput"><span class="identifier">skip</span><span class="special">[]</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.directive.skip.description"></a><h6>
+<a name="id671897"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">skip</span></code> directive is
+            the inverse of <a class="link" href="lexeme.html" title="Inhibiting Skipping (lexeme[])"><code class="computeroutput"><span class="identifier">lexeme</span></code></a>. While the <a class="link" href="lexeme.html" title="Inhibiting Skipping (lexeme[])"><code class="computeroutput"><span class="identifier">lexeme</span></code></a> directive turns off white
+            space skipping, the <code class="computeroutput"><span class="identifier">skip</span></code>
+            directive turns it on again. This is simply done by wrapping the parts
+            inside the <code class="computeroutput"><span class="identifier">skip</span></code> directive:
+          </p>
+<pre class="programlisting"><span class="identifier">skip</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span>
+</pre>
+<p>
+            It is also possible to supply a skip parser to the <code class="computeroutput"><span class="identifier">skip</span></code>
+            directive:
+          </p>
+<pre class="programlisting"><span class="identifier">skip</span><span class="special">(</span><span class="identifier">p</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span> <span class="comment">// Use `p` as a skipper for parsing `a`
+</span></pre>
+<p>
+            This makes it possible to: * Perform localized phrase level parsing while
+            doing character level parsing. * Replace the current skipper anywhere
+            with an entirely different skipper while doing phrase level parsing.
+          </p>
+<a name="spirit.qi.reference.directive.skip.header"></a><h6>
+<a name="id672020"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/skip.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_skip</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.directive.skip.namespace"></a><h6>
+<a name="id672094"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody><tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">skip</span> <span class="comment">// alias:
+                    boost::spirit::qi::skip</span></code>
+                  </p>
+                  </td></tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.skip.model_of"></a><h6>
+<a name="id672172"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.directive.skip.expression_semantics"></a><h6>
+<a name="id672241"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">skip</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Re-establish the skipper that got inhibited by lexeme
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">skip</span><span class="special">(</span><span class="identifier">p</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Use <code class="computeroutput"><span class="identifier">p</span></code> as a skipper
+                    for parsing <code class="computeroutput"><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.skip.attributes"></a><h6>
+<a name="id672392"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">skip</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">skip</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">skip</span><span class="special">(</span><span class="identifier">p</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">skip</span><span class="special">(</span><span class="identifier">p</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="identifier">lexeme</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.directive.skip.complexity"></a><h6>
+<a name="id672711"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the subject parser,
+                <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.directive.skip.example"></a><h6>
+<a name="id672742"></a>
+            <a class="link" href="skip.html#spirit.qi.reference.directive.skip.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Simple usage of <code class="computeroutput"><span class="identifier">skip</span><span class="special">[]</span></code>:
+          </p>
+<p>
+            </p>
+<p>
+              Explicitly specify a skip parser. This parser parses comma delimited
+              numbers, ignoring spaces.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1, 2, 3, 4, 5"</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">(</span><span class="identifier">space</span><span class="special">)[</span><span class="identifier">int_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">)]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="repeat.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../numeric.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,81 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Numeric</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="directive/skip.html" title="Re-Establish Skipping (skip[])">
+<link rel="next" href="numeric/uint.html" title="Unsigned Integers (uint_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive/skip.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/uint.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Numeric">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.numeric"></a><a class="link" href="numeric.html" title="Numeric">Numeric</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="numeric/uint.html"> Unsigned Integers
+          (<code class="computeroutput"><span class="identifier">uint_</span></code>, etc.)</a></span></dt>
+<dt><span class="section"><a href="numeric/int.html"> Signed Integers
+          (<code class="computeroutput"><span class="identifier">int_</span></code>, etc.)</a></span></dt>
+<dt><span class="section"><a href="numeric/real.html"> Real Numbers (<code class="computeroutput"><span class="identifier">float_</span></code>, <code class="computeroutput"><span class="identifier">double_</span></code>,
+          etc.)</a></span></dt>
+</dl></div>
+<p>
+          The library includes a couple of predefined objects for parsing signed
+          and unsigned integers and real numbers. These parsers are fully parametric.
+          Most of the important aspects of numeric parsing can be finely adjusted
+          to suit. This includes the radix base, the minimum and maximum number of
+          allowable digits, the exponent, the fraction etc. Policies control the
+          real number parsers' behavior. There are some predefined policies covering
+          the most common real number formats but the user can supply her own when
+          needed.
+        </p>
+<p>
+          The numeric parsers are fine tuned (employing loop unrolling and extensive
+          template metaprogramming) with exceptional performance that rivals the
+          low level C functions such as <code class="computeroutput"><span class="identifier">atof</span></code>,
+          <code class="computeroutput"><span class="identifier">strtod</span></code>, <code class="computeroutput"><span class="identifier">atol</span></code>,
+          <code class="computeroutput"><span class="identifier">strtol</span></code>. Benchmarks reveal
+          up to 4X speed over the C counterparts. This goes to show that you can
+          write extremely tight generic C++ code that rivals, if not surpasses C.
+        </p>
+<a name="spirit.qi.reference.numeric.module_header"></a><h6>
+<a name="id673012"></a>
+          <a class="link" href="numeric.html#spirit.qi.reference.numeric.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="directive/skip.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/uint.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,577 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Signed Integers (int_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="uint.html" title="Unsigned Integers (uint_, etc.)">
+<link rel="next" href="real.html" title="Real Numbers (float_, double_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="uint.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Signed Integers (int_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.numeric.int"></a><a class="link" href="int.html" title="Signed Integers (int_, etc.)"> Signed Integers
+          (<code class="computeroutput"><span class="identifier">int_</span></code>, etc.)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.numeric.int.description"></a><h6>
+<a name="id676543"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">int_parser</span></code> can parse
+            signed integers of arbitrary length and size. This is almost the same
+            as the <code class="computeroutput"><span class="identifier">uint_parser</span></code>. The
+            only difference is the additional task of parsing the <code class="computeroutput"><span class="char">'+'</span></code>
+            or <code class="computeroutput"><span class="char">'-'</span></code> sign preceding the number.
+            The class interface is the same as that of the <code class="computeroutput"><span class="identifier">uint_parser</span></code>.
+          </p>
+<p>
+            The <code class="computeroutput"><span class="identifier">int_parser</span></code> parser
+            can be used to parse ordinary primitive C/C++ integers or even user defined
+            scalars such as bigints (unlimited precision integers) as long as the
+            type follows certain expression requirements (documented below).
+          </p>
+<a name="spirit.qi.reference.numeric.int.header"></a><h6>
+<a name="id676606"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/int.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.numeric.int.namespace"></a><h6>
+<a name="id676681"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">short_</span> <span class="comment">// alias:
+                    boost::spirit::qi::short_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">int_</span> <span class="comment">// alias:
+                    boost::spirit::qi::int_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_</span> <span class="comment">// alias:
+                    boost::spirit::qi::long_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_long</span> <span class="comment">//
+                    alias: boost::spirit::qi::long_long</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">long_long</span></code> is only available
+              on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code>
+              is defined (i.e. on platforms having native support for <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">long</span>
+              <span class="keyword">long</span></code> (64 bit) unsigned integer
+              types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.numeric.int.synopsis"></a><h6>
+<a name="id676911"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">T</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">MinDigits</span>
+  <span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxDigits</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">int_parser</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.reference.numeric.int.template_parameters"></a><h6>
+<a name="id677007"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The numeric base type of the numeric parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Radix</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The radix base. This can be either 2: binary, 8: octal, 10: decimal
+                    and 16: hexadecimal.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    10
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">MinDigits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The minimum number of digits allowable.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    1
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">MaxDigits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The maximum number of digits allowable. If this is -1, then the
+                    maximum limit becomes unbounded.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    -1
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.int.model_of"></a><h6>
+<a name="id677180"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">NP</span></code></span></dt>
+<dd><p>
+                An instance of <code class="computeroutput"><span class="identifier">int_parser</span></code>
+                (type).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code></span></dt>
+<dd><p>
+                An object of <code class="computeroutput"><span class="identifier">T</span></code>, the
+                numeric base type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.numeric.int.expression_semantics"></a><h6>
+<a name="id677271"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">NP</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Instantiate and (default) construct an <code class="computeroutput"><span class="identifier">int_parser</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">short_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">int_parser</span><span class="special"><</span><span class="keyword">short</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">int_parser</span><span class="special"><</span><span class="keyword">long</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">int_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">int_parser</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">int_parser</span><span class="special"><</span><span class="keyword">long</span>
+                    <span class="keyword">long</span><span class="special">,</span>
+                    <span class="number">10</span><span class="special">,</span>
+                    <span class="number">1</span><span class="special">,</span>
+                    <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.int.attributes"></a><h6>
+<a name="id677655"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.attributes">Attributes</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <code class="computeroutput"><span class="identifier">T</span></code>, The numeric base
+                type of the numeric parser.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.int.complexity"></a><h6>
+<a name="id677686"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of digits being parsed plus the sign.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.int.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
+<a name="id677710"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
+            Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
+          </h6>
+<p>
+            The numeric base type, <code class="computeroutput"><span class="identifier">T</span></code>,
+            the expression requirements below must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Default construct.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct from an <code class="computeroutput"><span class="keyword">int</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Addition.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">-</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Subtraction.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Multiplication.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_bounded</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">true</span></code> or <code class="computeroutput"><span class="keyword">false</span></code> if <code class="computeroutput"><span class="identifier">T</span></code>
+                    bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    radix digits. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits10</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    base 10. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Minimum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.int.example"></a><h6>
+<a name="id678265"></a>
+            <a class="link" href="int.html#spirit.qi.reference.numeric.int.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic signed integers:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"+12345"</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"-12345"</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="uint.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="real.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,1064 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Real Numbers (float_, double_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="int.html" title="Signed Integers (int_, etc.)">
+<link rel="next" href="../operator.html" title="Operator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Real Numbers (float_, double_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.numeric.real"></a><a class="link" href="real.html" title="Real Numbers (float_, double_, etc.)"> Real Numbers (<code class="computeroutput"><span class="identifier">float_</span></code>, <code class="computeroutput"><span class="identifier">double_</span></code>,
+          etc.)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.numeric.real.description"></a><h6>
+<a name="id678415"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">real_parser</span></code> can parse
+            real numbers of arbitrary length and size limited by its template parameter,
+            <code class="computeroutput"><span class="identifier">T</span></code>. The numeric base type
+            <code class="computeroutput"><span class="identifier">T</span></code> can be a user defined
+            numeric type such as fixed_point (fixed point reals) and bignum (unlimited
+            precision numbers) as long as the type follows certain expression requirements
+            (documented below).
+          </p>
+<a name="spirit.qi.reference.numeric.real.header"></a><h6>
+<a name="id678454"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/real.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_real</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.numeric.real.namespace"></a><h6>
+<a name="id678528"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">float_</span> <span class="comment">// alias:
+                    boost::spirit::qi::float_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">double_</span> <span class="comment">//
+                    alias: boost::spirit::qi::double_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">long_double</span> <span class="comment">//
+                    alias: boost::spirit::qi::long_double</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.real.synopsis"></a><h6>
+<a name="id678683"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">RealPolicies</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">real_parser</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.reference.numeric.real.template_parameters"></a><h6>
+<a name="id678748"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The numeric base type of the numeric parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RealPolicies</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Policies control the parser's behavior.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.real.model_of"></a><h6>
+<a name="id678878"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">NP</span></code></span></dt>
+<dd><p>
+                An instance of <code class="computeroutput"><span class="identifier">real_parser</span></code>
+                (type).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">RP</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">RealPolicies</span></code> (type).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code></span></dt>
+<dd><p>
+                An object of <code class="computeroutput"><span class="identifier">T</span></code>, the
+                numeric base type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">exp</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="keyword">int</span></code> exponent.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="keyword">bool</span></code> flag.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code>,
+            <code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                ForwardIterator. first/last
+                iterator pair.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.numeric.real.expression_semantics"></a><h6>
+<a name="id679081"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">NP</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Instantiate and (default) construct an <code class="computeroutput"><span class="identifier">real_parser</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">float_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">real_parser</span><span class="special"><</span><span class="keyword">float</span><span class="special">,</span> <span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">double_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">real_parser</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span> <span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">long_double</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create an <code class="computeroutput"><span class="identifier">real_parser</span><span class="special"><</span><span class="keyword">long</span>
+                    <span class="keyword">double</span><span class="special">,</span>
+                    <span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+                    <span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.real.attributes"></a><h6>
+<a name="id679369"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.attributes">Attributes</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <code class="computeroutput"><span class="identifier">T</span></code>, The numeric base
+                type of the numeric parser.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.real.complexity"></a><h6>
+<a name="id679400"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of characters (including the digits,
+                exponent, sign, etc.) being parsed.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.real.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
+<a name="id679424"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
+            Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
+          </h6>
+<p>
+            The numeric base type, <code class="computeroutput"><span class="identifier">T</span></code>,
+            the minimum expression requirements listed below must be valid. Take
+            note that additional requirements may be imposed by custom policies.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Default construct.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct from an <code class="computeroutput"><span class="keyword">int</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Addition.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">-</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Subtraction.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Multiplication.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_bounded</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">true</span></code> or <code class="computeroutput"><span class="keyword">false</span></code> if <code class="computeroutput"><span class="identifier">T</span></code>
+                    bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    radix digits. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits10</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    base 10. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Minimum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">scale</span><span class="special">(</span><span class="identifier">exp</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Multiply <code class="computeroutput"><span class="identifier">n</span></code> by
+                    <code class="computeroutput"><span class="number">10</span><span class="special">^</span><span class="identifier">exp</span></code>. Default implementation
+                    is provided for <code class="computeroutput"><span class="keyword">float</span></code>,
+                    <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">negate</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Negate <code class="computeroutput"><span class="identifier">n</span></code> if
+                    <code class="computeroutput"><span class="identifier">b</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>. Default implementation is
+                    provided for <code class="computeroutput"><span class="keyword">float</span></code>,
+                    <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_equal_to_one</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Return <code class="computeroutput"><span class="keyword">true</span></code> if
+                    <code class="computeroutput"><span class="identifier">n</span></code> is equal to
+                    <code class="computeroutput"><span class="number">1.0</span></code>. Default implementation
+                    is provided for <code class="computeroutput"><span class="keyword">float</span></code>,
+                    <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              The additional spirit real number traits above are provided to allow
+              custom implementations to implement efficient real number parsers.
+              For example, for certain custom real numbers, scaling to a base 10
+              exponent is a very cheap operation.
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code_"></a><h6>
+<a name="id680456"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code_"><code class="computeroutput"><span class="identifier">RealPolicies</span></code></a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">RealPolicies</span></code> template
+            parameter is a class that groups all the policies that control the parser's
+            behavior. Policies control the real number parsers' behavior.
+          </p>
+<p>
+            The default is <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>. The default is provided to take
+            care of the most common case (there are many ways to represent, and hence
+            parse, real numbers). In most cases, the default policies are sufficient
+            and can be used straight out of the box. They are designed to parse C/C++
+            style floating point numbers of the form <code class="computeroutput"><span class="identifier">nnn</span><span class="special">.</span><span class="identifier">fff</span><span class="special">.</span><span class="identifier">Eeee</span></code>
+            where <code class="computeroutput"><span class="identifier">nnn</span></code> is the whole
+            number part, <code class="computeroutput"><span class="identifier">fff</span></code> is the
+            fractional part, <code class="computeroutput"><span class="identifier">E</span></code> is
+            <code class="computeroutput"><span class="char">'e'</span></code> or <code class="computeroutput"><span class="char">'E'</span></code>
+            and <code class="computeroutput"><span class="identifier">eee</span></code> is the exponent
+            optionally preceded by <code class="computeroutput"><span class="char">'-'</span></code>
+            or <code class="computeroutput"><span class="char">'+'</span></code> with the additional
+            detection of NaN and Inf as mandated by the C99 Standard and proposed
+            for inclusion into the C++0x Standard: nan, nan(...), inf and infinity
+            (the matching is case-insensitive). This corresponds to the following
+            grammar:
+          </p>
+<pre class="programlisting"><span class="identifier">sign</span>
+    <span class="special">=</span>   <span class="identifier">lit</span><span class="special">(</span><span class="char">'+'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'-'</span>
+    <span class="special">;</span>
+
+<span class="identifier">nan</span> 
+    <span class="special">=</span>   <span class="special">-</span><span class="identifier">lit</span><span class="special">(</span><span class="string">"1.0#"</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">no_case</span><span class="special">[</span><span class="string">"nan"</span><span class="special">]</span> 
+        <span class="special">>></span> <span class="special">-(</span><span class="char">'('</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">')'</span><span class="special">)</span> <span class="special">>></span> <span class="char">')'</span><span class="special">)</span>
+    <span class="special">;</span>
+    
+<span class="identifier">inf</span>
+    <span class="special">=</span>   <span class="identifier">no_case</span><span class="special">[</span><span class="identifier">lit</span><span class="special">(</span><span class="string">"inf"</span><span class="special">)</span> <span class="special">>></span> <span class="special">-</span><span class="identifier">lit</span><span class="special">(</span><span class="string">"inity"</span><span class="special">)]</span>
+    <span class="special">;</span>
+
+<span class="identifier">floating_literal</span>
+    <span class="special">=</span>   <span class="special">-</span><span class="identifier">sign</span> <span class="special">>></span>
+        <span class="special">(</span>       <span class="identifier">nan</span>
+            <span class="special">|</span>   <span class="identifier">inf</span>
+            <span class="special">|</span>   <span class="identifier">fractional_constant</span> <span class="special">>></span> <span class="special">!</span><span class="identifier">exponent_part</span>
+            <span class="special">|</span>  <span class="special">+</span><span class="identifier">digit</span> <span class="special">>></span> <span class="identifier">exponent_part</span>
+        <span class="special">)</span>
+    <span class="special">;</span>
+
+<span class="identifier">fractional_constant</span>
+    <span class="special">=</span>  <span class="special">*</span><span class="identifier">digit</span> <span class="special">>></span> <span class="char">'.'</span> <span class="special">>></span> <span class="special">+</span><span class="identifier">digit</span>
+    <span class="special">|</span>  <span class="special">+</span><span class="identifier">digit</span> <span class="special">>></span> <span class="special">-</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'.'</span><span class="special">)</span>
+    <span class="special">;</span>
+
+<span class="identifier">exponent_part</span>
+    <span class="special">=</span>   <span class="special">(</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'e'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'E'</span><span class="special">)</span> <span class="special">>></span> <span class="special">-</span><span class="identifier">sign</span> <span class="special">>></span> <span class="special">+</span><span class="identifier">digit</span>
+    <span class="special">;</span>
+</pre>
+<p>
+            There are four <code class="computeroutput"><span class="identifier">RealPolicies</span></code>
+            pre-defined for immediate use:
+          </p>
+<div class="table">
+<a name="id681057"></a><p class="title"><b>Table 4. Predefined Policies</b></p>
+<div class="table-contents"><table class="table" summary="Predefined Policies">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Policies
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">ureal_policies</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Without sign.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">real_policies</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span>
+                  <span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  With sign.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">strict_ureal_policies</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Without sign, dot required.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">strict_real_policies</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  With sign, dot required.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              Integers are considered a subset of real numbers, so for instance,
+              <code class="computeroutput"><span class="identifier">double_</span></code> recognizes
+              integer numbers (without a dot) just as well. To avoid this ambiguity,
+              <code class="computeroutput"><span class="identifier">strict_ureal_policies</span></code>
+              and <code class="computeroutput"><span class="identifier">strict_real_policies</span></code>
+              require a dot to be present for a number to be considered a successful
+              match.
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__expression_requirements"></a><h6>
+<a name="id681288"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__expression_requirements"><code class="computeroutput"><span class="identifier">RealPolicies</span></code> Expression Requirements</a>
+          </h6>
+<p>
+            For models of <code class="computeroutput"><span class="identifier">RealPolicies</span></code>
+            the following expressions must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">allow_leading_dot</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Allow leading dot.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">allow_trailing_dot</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Allow trailing dot.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">expect_dot</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Require a dot.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_sign</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the prefix sign (e.g. '-'). Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_n</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the integer at the left of the decimal point. Return <code class="computeroutput"><span class="keyword">true</span></code> if successful, otherwise
+                    <code class="computeroutput"><span class="keyword">false</span></code>. If successful,
+                    place the result into <code class="computeroutput"><span class="identifier">n</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_dot</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the decimal point. Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_frac_n</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the fraction after the decimal point. Return <code class="computeroutput"><span class="keyword">true</span></code> if successful, otherwise
+                    <code class="computeroutput"><span class="keyword">false</span></code>. If successful,
+                    place the result into <code class="computeroutput"><span class="identifier">n</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_exp</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the exponent prefix (e.g. 'e'). Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_exp_n</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse the actual exponent. Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                    If successful, place the result into <code class="computeroutput"><span class="identifier">n</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_nan</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse a NaN. Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                    If successful, place the result into <code class="computeroutput"><span class="identifier">n</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">RP</span><span class="special">::</span><span class="identifier">parse_inf</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span>
+                    <span class="identifier">l</span><span class="special">,</span>
+                    <span class="identifier">n</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse an Inf. Return <code class="computeroutput"><span class="keyword">true</span></code>
+                    if successful, otherwise <code class="computeroutput"><span class="keyword">false</span></code>.
+                    If successful, place the result into <code class="computeroutput"><span class="identifier">n</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+            The <code class="computeroutput"><span class="identifier">parse_nan</span></code> and <code class="computeroutput"><span class="identifier">parse_inf</span></code> functions get called whenever:
+          </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                a number to parse does not start with a digit (after having successfully
+                parsed an optional sign)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            or
+          </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                after a real number of the value 1 (having no exponential part and
+                a fractional part value of 0) has been parsed.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            The first call recognizes representations of NaN or Inf starting with
+            a non-digit character (such as NaN, Inf, QNaN etc.). The second call
+            recognizes representation formats starting with a <code class="computeroutput"><span class="number">1.0</span></code>
+            (such as <code class="computeroutput"><span class="string">"1.0#NAN"</span></code>
+            or <code class="computeroutput"><span class="string">"1.0#INF"</span></code> etc.).
+          </p>
+<p>
+            The functions should return true if a Nan or Inf has been found. In this
+            case the attribute <code class="computeroutput"><span class="identifier">n</span></code>
+            should be set to the matched value (NaN or Inf). The optional sign will
+            be automatically applied afterwards.
+          </p>
+<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__specializations"></a><h6>
+<a name="id682130"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__specializations"><code class="computeroutput"><span class="identifier">RealPolicies</span></code> Specializations</a>
+          </h6>
+<p>
+            The easiest way to implement a proper real parsing policy is to derive
+            a new type from the the type <code class="computeroutput"><span class="identifier">real_policies</span></code>
+            while overriding the aspects of the parsing which need to be changed.
+            For example, here's the implementation of the pre-defined <code class="computeroutput"><span class="identifier">strict_real_policies</span></code>:
+          </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">strict_real_policies</span> <span class="special">:</span> <span class="identifier">real_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="keyword">static</span> <span class="keyword">bool</span> <span class="keyword">const</span> <span class="identifier">expect_dot</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.qi.reference.numeric.real.example"></a><h6>
+<a name="id682264"></a>
+            <a class="link" href="real.html#spirit.qi.reference.numeric.real.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">real_parser</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic real number parsing:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"+12345e6"</span><span class="special">,</span> <span class="identifier">double_</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            A custom real number policy:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="comment">///////////////////////////////////////////////////////////////////////////////
+</span><span class="comment">//  These policies can be used to parse thousand separated
+</span><span class="comment">//  numbers with at most 2 decimal digits after the decimal
+</span><span class="comment">//  point. e.g. 123,456,789.01
+</span><span class="comment">///////////////////////////////////////////////////////////////////////////////
+</span><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">ts_real_policies</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">ureal_policies</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="comment">//  2 decimal places Max
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attribute</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="keyword">bool</span>
+    <span class="identifier">parse_frac_n</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Attribute</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span>
+            <span class="identifier">extract_uint</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="keyword">true</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span>
+    <span class="special">}</span>
+
+    <span class="comment">//  No exponent
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="keyword">bool</span>
+    <span class="identifier">parse_exp</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&)</span>
+    <span class="special">{</span>
+        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="comment">//  No exponent
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attribute</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="keyword">bool</span>
+    <span class="identifier">parse_exp_n</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&,</span> <span class="identifier">Attribute</span><span class="special">&)</span>
+    <span class="special">{</span>
+        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="comment">//  Thousands separated numbers
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attribute</span><span class="special">></span>
+    <span class="keyword">static</span> <span class="keyword">bool</span>
+    <span class="identifier">parse_n</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Attribute</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_parser</span><span class="special">;</span>
+        <span class="keyword">namespace</span> <span class="identifier">qi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">;</span>
+
+        <span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">></span> <span class="identifier">uint3</span><span class="special">;</span>
+        <span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">3</span><span class="special">></span> <span class="identifier">uint3_3</span><span class="special">;</span>
+
+        <span class="identifier">T</span> <span class="identifier">result</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
+        <span class="keyword">if</span> <span class="special">(</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">uint3</span><span class="special">,</span> <span class="identifier">result</span><span class="special">))</span>
+        <span class="special">{</span>
+            <span class="keyword">bool</span> <span class="identifier">hit</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
+            <span class="identifier">T</span> <span class="identifier">n</span><span class="special">;</span>
+            <span class="identifier">Iterator</span> <span class="identifier">save</span> <span class="special">=</span> <span class="identifier">first</span><span class="special">;</span>
+
+            <span class="keyword">while</span> <span class="special">(</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">','</span><span class="special">)</span> <span class="special">&&</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">uint3_3</span><span class="special">,</span> <span class="identifier">n</span><span class="special">))</span>
+            <span class="special">{</span>
+                <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">result</span> <span class="special">*</span> <span class="number">1000</span> <span class="special">+</span> <span class="identifier">n</span><span class="special">;</span>
+                <span class="identifier">save</span> <span class="special">=</span> <span class="identifier">first</span><span class="special">;</span>
+                <span class="identifier">hit</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+            <span class="special">}</span>
+
+            <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">save</span><span class="special">;</span>
+            <span class="keyword">if</span> <span class="special">(</span><span class="identifier">hit</span><span class="special">)</span>
+                <span class="identifier">attr</span> <span class="special">=</span> <span class="identifier">result</span><span class="special">;</span>
+            <span class="keyword">return</span> <span class="identifier">hit</span><span class="special">;</span>
+        <span class="special">}</span>
+        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            And its use:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">real_parser</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">ts_real_policies</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="special">></span> <span class="identifier">ts_real</span><span class="special">;</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"123,456,789.01"</span><span class="special">,</span> <span class="identifier">ts_real</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../operator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,641 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Unsigned Integers (uint_, etc.)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric.html" title="Numeric">
+<link rel="prev" href="../numeric.html" title="Numeric">
+<link rel="next" href="int.html" title="Signed Integers (int_, etc.)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Unsigned Integers (uint_, etc.)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.numeric.uint"></a><a class="link" href="uint.html" title="Unsigned Integers (uint_, etc.)"> Unsigned Integers
+          (<code class="computeroutput"><span class="identifier">uint_</span></code>, etc.)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.numeric.uint.description"></a><h6>
+<a name="id673103"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">uint_parser</span></code> class
+            is the simplest among the members of the numerics package. The <code class="computeroutput"><span class="identifier">uint_parser</span></code> can parse unsigned integers
+            of arbitrary length and size. The <code class="computeroutput"><span class="identifier">uint_parser</span></code>
+            parser can be used to parse ordinary primitive C/C++ integers or even
+            user defined scalars such as bigints (unlimited precision integers) as
+            long as the type follows certain expression requirements (documented
+            below). The <code class="computeroutput"><span class="identifier">uint_parser</span></code>
+            is a template class. Template parameters fine tune its behavior.
+          </p>
+<a name="spirit.qi.reference.numeric.uint.header"></a><h6>
+<a name="id673149"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/uint.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_uint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.numeric.uint.namespace"></a><h6>
+<a name="id673223"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">bin</span> <span class="comment">// alias:
+                    boost::spirit::qi::bin</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">oct</span> <span class="comment">// alias:
+                    boost::spirit::qi::oct</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">hex</span> <span class="comment">// alias:
+                    boost::spirit::qi::hex</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ushort_</span> <span class="comment">//
+                    alias: boost::spirit::qi::ushort_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_</span> <span class="comment">// alias:
+                    boost::spirit::qi::ulong_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">uint_</span> <span class="comment">// alias:
+                    boost::spirit::qi::uint_</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ulong_long</span> <span class="comment">//
+                    alias: boost::spirit::qi::ulong_long</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+              <code class="computeroutput"><span class="identifier">ulong_long</span></code> is only
+              available on platforms where the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_HAS_LONG_LONG</span></code> is defined (i.e.
+              on platforms having native support for <code class="computeroutput"><span class="keyword">unsigned</span>
+              <span class="keyword">long</span> <span class="keyword">long</span></code>
+              (64 bit) unsigned integer types).
+            </p></td></tr>
+</table></div>
+<a name="spirit.qi.reference.numeric.uint.synopsis"></a><h6>
+<a name="id673566"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
+    <span class="keyword">typename</span> <span class="identifier">T</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span>
+  <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">MinDigits</span>
+  <span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxDigits</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">uint_parser</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.reference.numeric.uint.template_parameters"></a><h6>
+<a name="id673662"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The numeric base type of the numeric parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Radix</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The radix base. This can be either 2: binary, 8: octal, 10: decimal
+                    and 16: hexadecimal.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    10
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">MinDigits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The minimum number of digits allowable.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    1
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">MaxDigits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The maximum number of digits allowable. If this is -1, then the
+                    maximum limit becomes unbounded.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    -1
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.uint.model_of"></a><h6>
+<a name="id673835"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">NP</span></code></span></dt>
+<dd><p>
+                An instance of <code class="computeroutput"><span class="identifier">uint_parser</span></code>
+                (type).
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code></span></dt>
+<dd><p>
+                An object of <code class="computeroutput"><span class="identifier">T</span></code>, the
+                numeric base type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.numeric.uint.expression_semantics"></a><h6>
+<a name="id673926"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">NP</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Instantiate and (default) construct a <code class="computeroutput"><span class="identifier">uint_parser</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">bin</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">oct</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">8</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">hex</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ushort_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span>
+                    <span class="keyword">short</span><span class="special">,</span>
+                    <span class="number">10</span><span class="special">,</span>
+                    <span class="number">1</span><span class="special">,</span>
+                    <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span>
+                    <span class="keyword">long</span><span class="special">,</span>
+                    <span class="number">10</span><span class="special">,</span>
+                    <span class="number">1</span><span class="special">,</span>
+                    <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">uint_</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span>
+                    <span class="keyword">int</span><span class="special">,</span>
+                    <span class="number">10</span><span class="special">,</span>
+                    <span class="number">1</span><span class="special">,</span>
+                    <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ulong_long</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a <code class="computeroutput"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span>
+                    <span class="keyword">long</span> <span class="keyword">long</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="special">-</span><span class="number">1</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.uint.attributes"></a><h6>
+<a name="id674542"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.attributes">Attributes</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <code class="computeroutput"><span class="identifier">T</span></code>, The numeric base
+                type of the numeric parser.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.uint.complexity"></a><h6>
+<a name="id674573"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N), where N is the number of digits being parsed.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
+<a name="id674597"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
+            Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
+          </h6>
+<p>
+            The numeric base type, <code class="computeroutput"><span class="identifier">T</span></code>,
+            the expression requirements below must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Default construct.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="number">0</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct from an <code class="computeroutput"><span class="keyword">int</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Addition.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">n</span> <span class="special">*</span>
+                    <span class="identifier">n</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Multiplication.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_bounded</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">true</span></code> or <code class="computeroutput"><span class="keyword">false</span></code> if <code class="computeroutput"><span class="identifier">T</span></code>
+                    bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    radix digits. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">digits10</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum Digits for <code class="computeroutput"><span class="identifier">T</span></code>,
+                    base 10. Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">max</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Maximum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">min</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Minimum value for <code class="computeroutput"><span class="identifier">T</span></code>.
+                    Required only if <code class="computeroutput"><span class="identifier">T</span></code>
+                    is bounded.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.numeric.uint.example"></a><h6>
+<a name="id676221"></a>
+            <a class="link" href="uint.html#spirit.qi.reference.numeric.uint.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_parser</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic unsigned integers:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12345"</span><span class="special">,</span> <span class="identifier">uint_</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Thousand separated number parser:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">3</span><span class="special">></span> <span class="identifier">uint3_p</span><span class="special">;</span>        <span class="comment">//  1..3 digits
+</span><span class="identifier">uint_parser</span><span class="special"><</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">10</span><span class="special">,</span> <span class="number">3</span><span class="special">,</span> <span class="number">3</span><span class="special">></span> <span class="identifier">uint3_3_p</span><span class="special">;</span>      <span class="comment">//  exactly 3 digits        
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"12,345,678"</span><span class="special">,</span> <span class="identifier">uint3_p</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">uint3_3_p</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="int.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,105 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Operator</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="numeric/real.html" title="Real Numbers (float_, double_, etc.)">
+<link rel="next" href="operator/alternative.html" title="Alternative (a | b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric/real.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator/alternative.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Operator">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.operator"></a><a class="link" href="operator.html" title="Operator">Operator</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="operator/alternative.html"> Alternative
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/and_predicate.html"> And
+          Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/difference.html"> Difference
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/expect.html"> Expectation
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">></span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"> Kleene (*a)</span></dt>
+<dt><span class="section"> List (a % b)</span></dt>
+<dt><span class="section"><a href="operator/not_predicate.html"> Not
+          Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/optional.html"> Optional
+          (<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/permutation.html"> Permutation
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"> Plus (+a)</span></dt>
+<dt><span class="section"><a href="operator/sequence.html"> Sequence
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+<dt><span class="section"><a href="operator/sequential_or.html"> Sequential
+          Or (<code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+          <span class="identifier">b</span></code>)</a></span></dt>
+</dl></div>
+<p>
+          Operators are used as a means for object composition and embedding. Simple
+          parsers may be composed to form composites through operator overloading,
+          crafted to approximate the syntax of <a class="link" href="../../abstracts/parsing_expression_grammar.html" title="Parsing Expression Grammar">Parsing
+          Expression Grammar</a> (PEG). An expression such as:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span>
+</pre>
+<p>
+          yields a new parser type which is a composite of its operands, <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code>.
+        </p>
+<p>
+          This module includes different parsers which get instantiated if one of
+          the overloaded operators is used with more primitive parser constructs.
+          It includes Alternative (<code class="computeroutput"><span class="special">|</span></code>),
+          And predicate (unary <code class="computeroutput"><span class="special">&</span></code>),
+          Difference (<code class="computeroutput"><span class="special">-</span></code>), Expect (<code class="computeroutput"><span class="special">></span></code>), Kleene star (unary <code class="computeroutput"><span class="special">*</span></code>), Lists (unary <code class="computeroutput"><span class="special">%</span></code>),
+          Not predicate (unary <code class="computeroutput"><span class="special">!</span></code>), Optional
+          (<code class="computeroutput"><span class="special">-</span></code>), Permutation (<code class="computeroutput"><span class="special">^</span></code>), Plus (unary <code class="computeroutput"><span class="special">+</span></code>),
+          Sequence (<code class="computeroutput"><span class="special">>></span></code>) and Sequential-Or
+          (<code class="computeroutput"><span class="special">||</span></code>).
+        </p>
+<a name="spirit.qi.reference.operator.module_header"></a><h6>
+<a name="id685603"></a>
+          <a class="link" href="operator.html#spirit.qi.reference.operator.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="numeric/real.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="operator/alternative.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,297 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Alternative (a | b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="../operator.html" title="Operator">
+<link rel="next" href="and_predicate.html" title="And Predicate (&a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Alternative (a | b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.alternative"></a><a class="link" href="alternative.html" title="Alternative (a | b)"> Alternative
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.alternative.description"></a><h6>
+<a name="id685704"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.description">Description</a>
+          </h6>
+<p>
+            The alternative operator, <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">|</span> <span class="identifier">b</span></code>,
+            matches one of two or more operands (<code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code>, ... etc.):
+          </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span> <span class="special">|</span> <span class="special">...</span>
+</pre>
+<p>
+            Alternative operands are tried one by one on a first-match-wins basis
+            starting from the leftmost operand. After a successfully matched alternative
+            is found, the parser concludes its search, essentially short-circuiting
+            the search for other potentially viable candidates. This short-circuiting
+            implicitly gives the highest priority to the leftmost alternative.
+          </p>
+<p>
+            Short-circuiting is done in the same manner as C or C++'s logical expressions;
+            e.g. <code class="computeroutput"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">x</span> <span class="special"><</span> <span class="number">3</span> <span class="special">||</span> <span class="identifier">y</span>
+            <span class="special"><</span> <span class="number">2</span><span class="special">)</span></code> where, if <code class="computeroutput"><span class="identifier">x</span>
+            <span class="special"><</span> <span class="number">3</span></code>,
+            the <code class="computeroutput"><span class="identifier">y</span> <span class="special"><</span>
+            <span class="number">2</span></code> test is not done at all. In addition
+            to providing an implicit priority rule for alternatives which is necessary,
+            given its non-deterministic nature, short-circuiting improves the execution
+            time. If the order of your alternatives is logically irrelevant, strive
+            to put the (expected) most common choice first for maximum efficiency.
+          </p>
+<a name="spirit.qi.reference.operator.alternative.header"></a><h6>
+<a name="id685868"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/alternative.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_alternative</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.alternative.model_of"></a><h6>
+<a name="id685943"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.alternative.expression_semantics"></a><h6>
+<a name="id686021"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> or <code class="computeroutput"><span class="identifier">b</span></code>.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.alternative.attributes"></a><h6>
+<a name="id686131"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.alternative.complexity"></a><h6>
+<a name="id687103"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the alternative parser is defined by the
+                sum of the complexities of its elements. The complexity of the alternative
+                parser itself is O(N), where N is the number of alternatives.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.alternative.example"></a><h6>
+<a name="id687127"></a>
+            <a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Simple usage:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span> <span class="special">|</span> <span class="identifier">int_</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"123"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span> <span class="special">|</span> <span class="identifier">int_</span><span class="special">);</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Extracting the attribute variant (using Boost.Variant):
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">variant</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span> <span class="special">|</span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              This should print <code class="computeroutput"><span class="string">"Hello"</span></code>.
+              Note: There are better ways to extract the value from the variant.
+              See Boost.Variant
+              visitation. This code is solely for demonstration.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(&</span><span class="identifier">attr</span><span class="special">))</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="keyword">int</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="keyword">else</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Extracting the attributes using Semantic Actions with Phoenix
+              (this should print <code class="computeroutput"><span class="number">123</span></code>):
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"123"</span><span class="special">,</span> <span class="special">(</span><span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span> <span class="special">|</span> <span class="identifier">int_</span><span class="special">)[</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">_1</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../operator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,216 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>And Predicate (&a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="alternative.html" title="Alternative (a | b)">
+<link rel="next" href="difference.html" title="Difference (a - b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alternative.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="difference.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="And Predicate (&a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.and_predicate"></a><a class="link" href="and_predicate.html" title="And Predicate (&a)"> And
+          Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.and_predicate.description"></a><h6>
+<a name="id687828"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.description">Description</a>
+          </h6>
+<p>
+            Syntactic predicates assert a certain conditional syntax to be satisfied
+            before evaluating another production. Similar to semantic predicates,
+            <a class="link" href="../auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a>,
+            syntactic predicates do not consume any input. The <span class="emphasis"><em>and predicate</em></span>,
+            <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>,
+            is a positive syntactic predicate that returns a zero length match only
+            if its predicate matches.
+          </p>
+<a name="spirit.qi.reference.operator.and_predicate.header"></a><h6>
+<a name="id687869"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/and_predicate.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_and_predicate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.and_predicate.model_of"></a><h6>
+<a name="id687943"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.and_predicate.expression_semantics"></a><h6>
+<a name="id688014"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the predicate <code class="computeroutput"><span class="identifier">a</span></code>
+                    matches, return a zero length match. Otherwise, fail.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.and_predicate.attributes"></a><h6>
+<a name="id688111"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.and_predicate.complexity"></a><h6>
+<a name="id688204"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the predicate, <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.and_predicate.example"></a><h6>
+<a name="id688235"></a>
+            <a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Basic look-ahead example: make sure that the last character is a semicolon,
+              but don't consume it, just peek at the next character:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_phrase_parser</span><span class="special">(</span><span class="string">"Hello ;"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span> <span class="special">>></span> <span class="special">&</span><span class="identifier">lit</span><span class="special">(</span><span class="char">';'</span><span class="special">),</span> <span class="keyword">false</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="alternative.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="difference.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,233 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Difference (a - b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="and_predicate.html" title="And Predicate (&a)">
+<link rel="next" href="expect.html" title="Expectation (a > b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="expect.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Difference (a - b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.difference"></a><a class="link" href="difference.html" title="Difference (a - b)"> Difference
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.difference.description"></a><h6>
+<a name="id688391"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.description">Description</a>
+          </h6>
+<p>
+            The difference operator, <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">-</span> <span class="identifier">b</span></code>,
+            is a binary operator that matches the first (LHS) operand but not the
+            second (RHS).
+            <sup>[<a name="id688420" href="#ftn.id688420" class="footnote">7</a>]</sup>
+          </p>
+<a name="spirit.qi.reference.operator.difference.header"></a><h6>
+<a name="id688459"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/difference.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_difference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.difference.model_of"></a><h6>
+<a name="id688534"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/binaryparser.html" title="BinaryParser"><code class="computeroutput"><span class="identifier">BinaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.difference.expression_semantics"></a><h6>
+<a name="id688612"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/binaryparser.html" title="BinaryParser"><code class="computeroutput"><span class="identifier">BinaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Parse <code class="computeroutput"><span class="identifier">a</span></code> but not
+                    <code class="computeroutput"><span class="identifier">b</span></code>.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.difference.attributes"></a><h6>
+<a name="id688722"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.difference.complexity"></a><h6>
+<a name="id688938"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity of the difference parser is defined by the sum of
+                the complexities of both operands.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.difference.example"></a><h6>
+<a name="id688962"></a>
+            <a class="link" href="difference.html#spirit.qi.reference.operator.difference.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Parse a C/C++ style comment:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"/*A Comment*/"</span><span class="special">,</span> <span class="string">"/*"</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="string">"*/"</span><span class="special">)</span> <span class="special">>></span> <span class="string">"*/"</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id688420" href="#id688420" class="para">7</a>] </sup>
+                Unlike classic Spirit, with Spirit2, the expression will always fail
+                if the RHS is a successful match regardless if the RHS matches less
+                characters. For example, the rule <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"policeman"</span><span class="special">)</span> <span class="special">-</span> <span class="string">"police"</span></code> will always fail
+                to match. Spirit2 does not count the matching chars while parsing
+                and there is no reliable and fast way to check if the LHS matches
+                more than the RHS.
+              </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="and_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="expect.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,285 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Expectation (a > b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="difference.html" title="Difference (a - b)">
+<link rel="next" href="kleene.html" title="Kleene (*a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="difference.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="kleene.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Expectation (a > b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.expect"></a><a class="link" href="expect.html" title="Expectation (a > b)"> Expectation
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">></span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.expect.description"></a><h6>
+<a name="id690220"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.description">Description</a>
+          </h6>
+<p>
+            Like the <a class="link" href="sequence.html" title="Sequence (a >> b)">Sequence</a>,
+            the expectation operator, <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">></span> <span class="identifier">b</span></code>,
+            parses two or more operands (<code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code>, ... etc.), in sequence:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span> <span class="special">></span> <span class="special">...</span>
+</pre>
+<p>
+            However, while the plain <a class="link" href="sequence.html" title="Sequence (a >> b)">Sequence</a>
+            simply returns a no-match (returns <code class="computeroutput"><span class="keyword">false</span></code>)
+            when one of the elements fail, the expectation: <code class="computeroutput"><span class="special">></span></code>
+            operator throws an <a class="link" href="expect.html#spirit.qi.reference.operator.expect.expectation_failure"><code class="computeroutput"><span class="identifier">expectation_failure</span></code></a><code class="computeroutput"><span class="special"><</span><span class="identifier">Iter</span><span class="special">></span></code> when the second or succeeding operands
+            (all operands except the first) fail to match.
+          </p>
+<a name="spirit.qi.reference.operator.expect.header"></a><h6>
+<a name="id690348"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/expect.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_expect</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.expect.model_of"></a><h6>
+<a name="id690422"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iter</span></code></span></dt>
+<dd><p>
+                a ForwardIterator type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.expect.expectation_failure"></a><h6>
+<a name="id690525"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.expectation_failure">Expectation
+            Failure</a>
+          </h6>
+<p>
+            When any operand, except the first, fail to match an <code class="computeroutput"><span class="identifier">expectation_failure</span><span class="special"><</span><span class="identifier">Iter</span><span class="special">></span></code> is thrown:
+          </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iter</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">expectation_failure</span>
+<span class="special">{</span>
+    <span class="identifier">Iter</span> <span class="identifier">first</span><span class="special">;</span>     <span class="comment">// [first, last) iterator pointing
+</span>    <span class="identifier">Iter</span> <span class="identifier">last</span><span class="special">;</span>      <span class="comment">// to the error position in the input.
+</span>    <code class="computeroutput"><span class="identifier">info</span></code> <span class="identifier">what</span><span class="special">;</span>      <span class="comment">// Information about the nature of the error.
+</span><span class="special">};</span>
+</pre>
+<a name="spirit.qi.reference.operator.expect.expression_semantics"></a><h6>
+<a name="id690662"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> followed
+                    by <code class="computeroutput"><span class="identifier">b</span></code>. If <code class="computeroutput"><span class="identifier">a</span></code> fails, no-match. If <code class="computeroutput"><span class="identifier">b</span></code> fails, throw an <code class="computeroutput"><span class="identifier">expectation_failure</span><span class="special"><</span><span class="identifier">Iter</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.expect.attributes"></a><h6>
+<a name="id690805"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.expect.complexity"></a><h6>
+<a name="id691486"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the expectation parser is defined by the
+                sum of the complexities of its elements. The complexity of the expectation
+                operator itself is O(N), where N is the number of elements in the
+                sequence.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.expect.example"></a><h6>
+<a name="id691510"></a>
+            <a class="link" href="expect.html#spirit.qi.reference.operator.expect.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">expectation_failure</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              The code below uses an expectation operator to throw an <a class="link" href="expect.html#spirit.qi.reference.operator.expect.expectation_failure"><code class="computeroutput"><span class="identifier">expectation_failure</span></code></a> with a
+              deliberate parsing error when <code class="computeroutput"><span class="string">"o"</span></code>
+              is expected and <code class="computeroutput"><span class="string">"i"</span></code>
+              is what is found in the input. The <code class="computeroutput"><span class="keyword">catch</span></code>
+              block prints the information related to the error. Note: This is low
+              level code that demonstrates the <span class="emphasis"><em>bare-metal</em></span>. Typically,
+              you use an Error Handler to deal with the error.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">try</span>
+<span class="special">{</span>
+    <span class="identifier">test_parser</span><span class="special">(</span><span class="string">"xi"</span><span class="special">,</span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">)</span> <span class="special">></span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'o'</span><span class="special">));</span> <span class="comment">// should throw an exception
+</span><span class="special">}</span>
+<span class="keyword">catch</span> <span class="special">(</span><span class="identifier">expectation_failure</span><span class="special"><</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">x</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"expected: "</span><span class="special">;</span> <span class="identifier">print_info</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">what</span><span class="special">);</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"got: \""</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">x</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">x</span><span class="special">.</span><span class="identifier">last</span><span class="special">)</span> <span class="special"><<</span> <span class="char">'"'</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              The code above will print:
+            </p>
+<p>
+            
+</p>
+<pre class="programlisting">expected: tag: literal-char, value: o
+got: "i"
+</pre>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="difference.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="kleene.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,221 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Kleene (*a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="expect.html" title="Expectation (a > b)">
+<link rel="next" href="list.html" title="List (a % b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="expect.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="list.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Kleene (*a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.kleene"></a><a class="link" href="kleene.html" title="Kleene (*a)"> Kleene (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.kleene.description"></a><h6>
+<a name="id691960"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.description">Description</a>
+          </h6>
+<p>
+            The kleene operator, <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>,
+            is a unary operator that matches its operand zero or more times.
+          </p>
+<a name="spirit.qi.reference.operator.kleene.header"></a><h6>
+<a name="id691988"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/kleene.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_kleene</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.kleene.model_of"></a><h6>
+<a name="id692062"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.kleene.expression_semantics"></a><h6>
+<a name="id692133"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> zero
+                    or more times.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.kleene.attributes"></a><h6>
+<a name="id692232"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.kleene.complexity"></a><h6>
+<a name="id692537"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the Kleene star is defined by the complexity
+                of its subject, <code class="computeroutput"><span class="identifier">a</span></code>,
+                multiplied by the number of repetitions. The complexity of the Kleene
+                star itself is O(N), where N is the number successful repetitions.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.kleene.example"></a><h6>
+<a name="id692568"></a>
+            <a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Parse a comma separated list of numbers and put them in a vector:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+<span class="identifier">test_phrase_parser_attr</span><span class="special">(</span>
+    <span class="string">"111, 222, 333, 444, 555"</span><span class="special">,</span> <span class="identifier">int_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">),</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> 
+    <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> 
+    <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">4</span><span class="special">]</span> 
+    <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="expect.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="list.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,232 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>List (a % b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="kleene.html" title="Kleene (*a)">
+<link rel="next" href="not_predicate.html" title="Not Predicate (!a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="kleene.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="List (a % b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.list"></a><a class="link" href="list.html" title="List (a % b)"> List (<code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.list.description"></a><h6>
+<a name="id692928"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.description">Description</a>
+          </h6>
+<p>
+            The list operator, <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>,
+            is a binary operator that matches a list of one or more repetitions of
+            <code class="computeroutput"><span class="identifier">a</span></code> separated by occurrences
+            of <code class="computeroutput"><span class="identifier">b</span></code>. This is equivalent
+            to <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+            <span class="special">*(</span><span class="identifier">b</span>
+            <span class="special">>></span> <span class="identifier">a</span><span class="special">)</span></code>.
+          </p>
+<a name="spirit.qi.reference.operator.list.header"></a><h6>
+<a name="id693010"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/list.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_list</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.list.model_of"></a><h6>
+<a name="id693084"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/binaryparser.html" title="BinaryParser"><code class="computeroutput"><span class="identifier">BinaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.list.expression_semantics"></a><h6>
+<a name="id693160"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/binaryparser.html" title="BinaryParser"><code class="computeroutput"><span class="identifier">BinaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match a list of one or more repetitions of <code class="computeroutput"><span class="identifier">a</span></code>
+                    separated by occurrences of <code class="computeroutput"><span class="identifier">b</span></code>.
+                    This is equivalent to <code class="computeroutput"><span class="identifier">a</span>
+                    <span class="special">>></span> <span class="special">*(</span><span class="identifier">b</span> <span class="special">>></span>
+                    <span class="identifier">a</span><span class="special">)</span></code>.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.list.attributes"></a><h6>
+<a name="id693301"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">-</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.list.complexity"></a><h6>
+<a name="id693528"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the List is defined by the complexity of
+                its subject, <code class="computeroutput"><span class="identifier">a</span></code>, multiplied
+                by the number of repetitions. The complexity of the List itself is
+                O(N), where N is the number successful repetitions.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.list.example"></a><h6>
+<a name="id693559"></a>
+            <a class="link" href="list.html#spirit.qi.reference.operator.list.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Parse a comma separated list of numbers and put them in a vector:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+<span class="identifier">test_phrase_parser_attr</span><span class="special">(</span>
+    <span class="string">"111, 222, 333, 444, 555"</span><span class="special">,</span> <span class="identifier">int_</span> <span class="special">%</span> <span class="char">','</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> 
+    <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> 
+    <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">3</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">4</span><span class="special">]</span> 
+    <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="kleene.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,245 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Not Predicate (!a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="list.html" title="List (a % b)">
+<link rel="next" href="optional.html" title="Optional (-a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="list.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="optional.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Not Predicate (!a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.not_predicate"></a><a class="link" href="not_predicate.html" title="Not Predicate (!a)"> Not
+          Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.not_predicate.description"></a><h6>
+<a name="id693900"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.description">Description</a>
+          </h6>
+<p>
+            Syntactic predicates assert a certain conditional syntax to be satisfied
+            before evaluating another production. Similar to semantic predicates,
+            <a class="link" href="../auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a>,
+            syntactic predicates do not consume any input. The <span class="emphasis"><em>not predicate</em></span>,
+            <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>,
+            is a negative syntactic predicate that returns a zero length match only
+            if its predicate fails to match.
+          </p>
+<a name="spirit.qi.reference.operator.not_predicate.header"></a><h6>
+<a name="id693941"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/not_predicate.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_not_predicate</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.not_predicate.model_of"></a><h6>
+<a name="id694015"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.not_predicate.expression_semantics"></a><h6>
+<a name="id694086"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    If the predicate <code class="computeroutput"><span class="identifier">a</span></code>
+                    matches, fail. Otherwise, return a zero length match.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.not_predicate.attributes"></a><h6>
+<a name="id694183"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.not_predicate.complexity"></a><h6>
+<a name="id694276"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the predicate, <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.not_predicate.example"></a><h6>
+<a name="id694307"></a>
+            <a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alpha</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Here's an alternative to the <code class="computeroutput"><span class="special">*(</span><span class="identifier">r</span> <span class="special">-</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">x</span></code>
+              idiom using the not-predicate instead. This parses a list of characters
+              terminated by a ';':
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"abcdef;"</span><span class="special">,</span> <span class="special">*(!</span><span class="identifier">lit</span><span class="special">(</span><span class="char">';'</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">)</span> <span class="special">>></span> <span class="char">';'</span><span class="special">);</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              The following parser ensures that we match distinct keywords (stored
+              in a symbol table). To do this, we make sure that the keyword does
+              not follow an alpha or an underscore:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">keywords</span><span class="special">;</span>
+<span class="identifier">keywords</span> <span class="special">=</span> <span class="string">"begin"</span><span class="special">,</span> <span class="string">"end"</span><span class="special">,</span> <span class="string">"for"</span><span class="special">;</span>
+
+<span class="comment">// This should fail:
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"beginner"</span><span class="special">,</span> <span class="identifier">keywords</span> <span class="special">>></span> <span class="special">!(</span><span class="identifier">alpha</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">));</span>
+
+<span class="comment">// This is ok:
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"end "</span><span class="special">,</span> <span class="identifier">keywords</span> <span class="special">>></span> <span class="special">!(</span><span class="identifier">alpha</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">),</span> <span class="keyword">false</span><span class="special">);</span>
+
+<span class="comment">// This is ok:
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"for()"</span><span class="special">,</span> <span class="identifier">keywords</span> <span class="special">>></span> <span class="special">!(</span><span class="identifier">alpha</span> <span class="special">|</span> <span class="char">'_'</span><span class="special">),</span> <span class="keyword">false</span><span class="special">);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="list.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="optional.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,242 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Optional (-a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="not_predicate.html" title="Not Predicate (!a)">
+<link rel="next" href="permutation.html" title="Permutation (a ^ b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="permutation.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Optional (-a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.optional"></a><a class="link" href="optional.html" title="Optional (-a)"> Optional
+          (<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.optional.description"></a><h6>
+<a name="id694848"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.description">Description</a>
+          </h6>
+<p>
+            The optional operator, <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>, is a unary operator that matches
+            its operand zero or one time.
+          </p>
+<a name="spirit.qi.reference.operator.optional.header"></a><h6>
+<a name="id694876"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/optional.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_optional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.optional.model_of"></a><h6>
+<a name="id694950"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.optional.expression_semantics"></a><h6>
+<a name="id695021"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> zero
+                    or one time.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.optional.attributes"></a><h6>
+<a name="id695119"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.optional.complexity"></a><h6>
+<a name="id695287"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The complexity is defined by the complexity of the operand, <code class="computeroutput"><span class="identifier">a</span></code>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.optional.example"></a><h6>
+<a name="id695319"></a>
+            <a class="link" href="optional.html#spirit.qi.reference.operator.optional.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">at_c</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Parse a person info with name (in quotes) optional age
+              <sup>[<a name="id695523" href="#ftn.id695523" class="footnote">8</a>]</sup>
+              and optional sex, all separated by comma.
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">vector</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">optional</span><span class="special"><</span><span class="keyword">int</span><span class="special">>,</span> <span class="identifier">optional</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span> <span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+
+<span class="identifier">test_phrase_parser_attr</span><span class="special">(</span>
+    <span class="string">"\"James Bond\", M"</span>
+  <span class="special">,</span> <span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">]</span>    <span class="comment">// name
+</span>        <span class="special">>></span> <span class="special">-(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">)</span>                   <span class="comment">// optional age
+</span>        <span class="special">>></span> <span class="special">-(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">)</span>                  <span class="comment">// optional sex
+</span>  <span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span>
+
+<span class="comment">// Should print: James Bond,M
+</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">);</span>                 <span class="comment">// print name
+</span><span class="keyword">if</span> <span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">))</span>                          <span class="comment">// print optional age
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="special">*</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">);</span>
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">))</span>                          <span class="comment">// print optional sex
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="special">*</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">2</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>        
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id695523" href="#id695523" class="para">8</a>] </sup>
+                  James Bond is shy about his age :-)
+                </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="not_predicate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="permutation.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Permutation (a ^ b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="optional.html" title="Optional (-a)">
+<link rel="next" href="plus.html" title="Plus (+a)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="optional.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="plus.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Permutation (a ^ b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.permutation"></a><a class="link" href="permutation.html" title="Permutation (a ^ b)"> Permutation
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.permutation.description"></a><h6>
+<a name="id696045"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.description">Description</a>
+          </h6>
+<p>
+            The permutation operator, <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">^</span> <span class="identifier">b</span></code>,
+            matches one or more operands (<code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code>, ... etc.) in any order:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span> <span class="special">^</span> <span class="special">...</span>
+</pre>
+<p>
+            The operands are the elements in the permutation set. Each element in
+            the permutation set may occur at most once, but not all elements of the
+            given set need to be present. For example:
+          </p>
+<pre class="programlisting"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special">^</span> <span class="char">'b'</span> <span class="special">^</span> <span class="char">'c'</span>
+</pre>
+<p>
+            matches:
+          </p>
+<pre class="programlisting"><span class="string">"a"</span><span class="special">,</span> <span class="string">"ab"</span><span class="special">,</span> <span class="string">"abc"</span><span class="special">,</span> <span class="string">"cba"</span><span class="special">,</span> <span class="string">"bca"</span> <span class="special">...</span> <span class="identifier">etc</span><span class="special">.</span>
+</pre>
+<a name="spirit.qi.reference.operator.permutation.header"></a><h6>
+<a name="id696221"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/permutation.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_permutation</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.permutation.model_of"></a><h6>
+<a name="id696295"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.permutation.expression_semantics"></a><h6>
+<a name="id696373"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> or <code class="computeroutput"><span class="identifier">b</span></code> in any order. Each operand
+                    may match zero or one time.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.permutation.attributes"></a><h6>
+<a name="id696484"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">^</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span> <span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">^</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.permutation.complexity"></a><h6>
+<a name="id699613"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the permutation parser is defined by the
+                sum of the complexities of its elements, s, multiplied by log s.
+                The complexity of the permutation parser itself is O(N log N), where
+                N is the number of elements.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.permutation.example"></a><h6>
+<a name="id699637"></a>
+            <a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Parse a string containing DNA codes (ACTG)
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"ACTGGCTAGACT"</span><span class="special">,</span> <span class="special">*(</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'A'</span><span class="special">)</span> <span class="special">^</span> <span class="char">'C'</span> <span class="special">^</span> <span class="char">'T'</span> <span class="special">^</span> <span class="char">'G'</span><span class="special">));</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="optional.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="plus.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,219 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Plus (+a)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="permutation.html" title="Permutation (a ^ b)">
+<link rel="next" href="sequence.html" title="Sequence (a >> b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="permutation.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sequence.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Plus (+a)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.plus"></a><a class="link" href="plus.html" title="Plus (+a)"> Plus (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.plus.description"></a><h6>
+<a name="id699803"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.description">Description</a>
+          </h6>
+<p>
+            The plus operator, <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>,
+            is a unary operator that matches its operand one or more times.
+          </p>
+<a name="spirit.qi.reference.operator.plus.header"></a><h6>
+<a name="id699831"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/plus.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_plus</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.plus.model_of"></a><h6>
+<a name="id699905"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.plus.expression_semantics"></a><h6>
+<a name="id699973"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> one or
+                    more times.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.plus.attributes"></a><h6>
+<a name="id700069"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.plus.complexity"></a><h6>
+<a name="id700237"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the Plus is defined by the complexity of
+                its subject, <code class="computeroutput"><span class="identifier">a</span></code>, multiplied
+                by the number of repetitions. The complexity of the Plus itself is
+                O(N), where N is the number successful repetitions.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.plus.example"></a><h6>
+<a name="id700269"></a>
+            <a class="link" href="plus.html#spirit.qi.reference.operator.plus.example">Example</a>
+          </h6>
+<p>
+            </p>
+<p>
+              Some using declarations:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">alpha</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Parse one or more strings containing one or more alphabetic characters
+              and put them in a vector:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+<span class="identifier">test_phrase_parser_attr</span><span class="special">(</span><span class="string">"yaba daba doo"</span><span class="special">,</span> <span class="special">+</span><span class="identifier">lexeme</span><span class="special">[+</span><span class="identifier">alpha</span><span class="special">],</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">attr</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="permutation.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sequence.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,277 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Sequence (a >> b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="plus.html" title="Plus (+a)">
+<link rel="next" href="sequential_or.html" title="Sequential Or (a || b)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="plus.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sequential_or.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Sequence (a >> b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.sequence"></a><a class="link" href="sequence.html" title="Sequence (a >> b)"> Sequence
+          (<code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.sequence.description"></a><h6>
+<a name="id700597"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.description">Description</a>
+          </h6>
+<p>
+            The sequence operator, <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span></code>,
+            which parses two or more operands (<code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code>, ... etc.), in sequence:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span> <span class="special">>></span> <span class="special">...</span>
+</pre>
+<a name="spirit.qi.reference.operator.sequence.header"></a><h6>
+<a name="id700673"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/sequence.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_sequence</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.sequence.model_of"></a><h6>
+<a name="id700747"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.sequence.expression_semantics"></a><h6>
+<a name="id700825"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> followed
+                    by <code class="computeroutput"><span class="identifier">b</span></code>.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.sequence.attributes"></a><h6>
+<a name="id700936"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.sequence.complexity"></a><h6>
+<a name="id701617"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the sequence parser is defined by the sum
+                of the complexities of its elements. The complexity of the sequence
+                itself is O(N), where N is the number of elements in the sequence.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.sequence.example"></a><h6>
+<a name="id701641"></a>
+            <a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_2</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">bf</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Simple usage:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"xy"</span><span class="special">,</span> <span class="identifier">char_</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">);</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Extracting the attribute tuple (using Boost.Fusion):
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">bf</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">char</span><span class="special">></span> <span class="identifier">attr</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"xy"</span><span class="special">,</span> <span class="identifier">char_</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">bf</span><span class="special">::</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">)</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">bf</span><span class="special">::</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">attr</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Extracting the attribute vector (using STL):
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span> <span class="identifier">vec</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"xy"</span><span class="special">,</span> <span class="identifier">char_</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">,</span> <span class="identifier">vec</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">vec</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">vec</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              Extracting the attributes using Semantic Actions (using Phoenix):
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"xy"</span><span class="special">,</span> <span class="special">(</span><span class="identifier">char_</span> <span class="special">>></span> <span class="identifier">char_</span><span class="special">)[</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">_1</span> <span class="special"><<</span> <span class="char">','</span> <span class="special"><<</span> <span class="identifier">_2</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">]);</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="plus.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sequential_or.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,254 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Sequential Or (a || b)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../operator.html" title="Operator">
+<link rel="prev" href="sequence.html" title="Sequence (a >> b)">
+<link rel="next" href="../string.html" title="String">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sequence.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Sequential Or (a || b)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.operator.sequential_or"></a><a class="link" href="sequential_or.html" title="Sequential Or (a || b)"> Sequential
+          Or (<code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+          <span class="identifier">b</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.operator.sequential_or.description"></a><h6>
+<a name="id702379"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.description">Description</a>
+          </h6>
+<p>
+            The sequential-or operator, <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">||</span> <span class="identifier">b</span></code>,
+            where the expression <code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span></code>
+            reads as match <code class="computeroutput"><span class="identifier">a</span></code> or
+            <code class="computeroutput"><span class="identifier">b</span></code> and in sequence. That
+            is, if both <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code> match, it must be in sequence; this
+            is equivalent to <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+            <span class="special">-</span><span class="identifier">b</span>
+            <span class="special">|</span> <span class="identifier">b</span></code>:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span> <span class="special">||</span> <span class="special">...</span>
+</pre>
+<a name="spirit.qi.reference.operator.sequential_or.header"></a><h6>
+<a name="id702516"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/sequential_or.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_sequential_or</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.operator.sequential_or.model_of"></a><h6>
+<a name="id702590"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.model_of">Model
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code>,
+            <code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.operator.sequential_or.expression_semantics"></a><h6>
+<a name="id702668"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/naryparser.html" title="NaryParser"><code class="computeroutput"><span class="identifier">NaryParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match <code class="computeroutput"><span class="identifier">a</span></code> or <code class="computeroutput"><span class="identifier">b</span></code> in sequence. equivalent to
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span>
+                    <span class="special">-</span><span class="identifier">b</span>
+                    <span class="special">|</span> <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.sequential_or.attributes"></a><h6>
+<a name="id702809"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.attributes">Attributes</a>
+          </h6>
+<p>
+            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
+            Attribute Notation</a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+                    <span class="identifier">b</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">B</span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span>
+
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span>
+<span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">>,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> <span class="special">--></span> <span class="special">(</span><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></pre>
+<p>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.operator.sequential_or.complexity"></a><h6>
+<a name="id703490"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                The overall complexity of the sequential-or parser is defined by
+                the sum of the complexities of its elements. The complexity of the
+                sequential-or itself is O(N), where N is the number of elements in
+                the sequence.
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.operator.sequential_or.example"></a><h6>
+<a name="id703514"></a>
+            <a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            </p>
+<p>
+              Correctly parsing a number with optional fractional digits:
+            </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"123.456"</span><span class="special">,</span> <span class="identifier">int_</span> <span class="special">||</span> <span class="special">(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">));</span>  <span class="comment">// full
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"123"</span><span class="special">,</span> <span class="identifier">int_</span> <span class="special">||</span> <span class="special">(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">));</span>      <span class="comment">// just the whole number
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">".456"</span><span class="special">,</span> <span class="identifier">int_</span> <span class="special">||</span> <span class="special">(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">));</span>     <span class="comment">// just the fraction</span></pre>
+<p>
+            </p>
+<p>
+            </p>
+<p>
+              A naive but incorrect solution would try to do this using optionals
+              (e.g.):
+            </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">int_</span> <span class="special">>></span> <span class="special">-(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">)</span>  <span class="comment">// will not match ".456"
+</span><span class="special">-</span><span class="identifier">int_</span> <span class="special">>></span> <span class="special">(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">)</span>  <span class="comment">// will not match "123"
+</span><span class="special">-</span><span class="identifier">int_</span> <span class="special">>></span> <span class="special">-(</span><span class="char">'.'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">)</span> <span class="comment">// will match empty strings! Ooops.
+</span></pre>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sequence.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../operator.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parser Concepts</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="parser_concepts/parser.html" title="Parser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="parser_concepts/parser.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Parser Concepts">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.parser_concepts"></a><a class="link" href="parser_concepts.html" title="Parser Concepts">Parser Concepts</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Parser</span></dt>
+<dt><span class="section">PrimitiveParser</span></dt>
+<dt><span class="section">UnaryParser</span></dt>
+<dt><span class="section">BinaryParser</span></dt>
+<dt><span class="section">NaryParser</span></dt>
+</dl></div>
+<p>
+          Spirit.Qi parsers fall into a couple of generalized concepts.
+          The <span class="emphasis"><em>Parser</em></span> is the most fundamental concept. All Spirit.Qi
+          parsers are models of the <span class="emphasis"><em>Parser</em></span> concept. <span class="emphasis"><em>PrimitiveParser</em></span>,
+          <span class="emphasis"><em>UnaryParser</em></span>, <span class="emphasis"><em>BinaryParser</em></span> and
+          <span class="emphasis"><em>NaryParser</em></span> are all refinements of the <span class="emphasis"><em>Parser</em></span>
+          concept.
+        </p>
+<p>
+          The following sections provide details on these concepts.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="parser_concepts/parser.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,239 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>BinaryParser</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="prev" href="unaryparser.html" title="UnaryParser">
+<link rel="next" href="naryparser.html" title="NaryParser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unaryparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="naryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="BinaryParser">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.parser_concepts.binaryparser"></a><a class="link" href="binaryparser.html" title="BinaryParser">BinaryParser</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.description"></a><h6>
+<a name="id636004"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>BinaryParser</em></span> is a composite parser that has a two
+            subjects, <code class="computeroutput"><span class="identifier">left</span></code> and <code class="computeroutput"><span class="identifier">right</span></code>. The BinaryParser allows its
+            subjects to be treated in the same way as a single instance of a <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+            following the Composite Design Pattern.
+          </p>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.refinement_of"></a><h6>
+<a name="id636056"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+                A BinaryParser.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
+<dd><p>
+                A BinaryParser type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.valid_expressions"></a><h6>
+<a name="id636135"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>, for any BinaryParser
+            the following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">left</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Left parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">right</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Right parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.type_expressions"></a><h6>
+<a name="id636296"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">left_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The left parser type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">right_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The right parser type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_binary_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">P</span></code>
+                    is a BinaryParser, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.invariants"></a><h6>
+<a name="id636497"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.invariants">Invariants</a>
+          </h6>
+<p>
+            For any BinaryParser, <code class="computeroutput"><span class="identifier">P</span></code>,
+            the following invariants always hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">left_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">right_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li>
+</ul></div>
+<a name="spirit.qi.reference.parser_concepts.binaryparser.models"></a><h6>
+<a name="id636636"></a>
+            <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.models">Models</a>
+          </h6>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add links to models of BinaryParser
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="unaryparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="naryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,205 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>NaryParser</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="prev" href="binaryparser.html" title="BinaryParser">
+<link rel="next" href="../basics.html" title="Basics">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binaryparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="NaryParser">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.parser_concepts.naryparser"></a><a class="link" href="naryparser.html" title="NaryParser">NaryParser</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.parser_concepts.naryparser.description"></a><h6>
+<a name="id636671"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>NaryParser</em></span> is a composite parser that has one or
+            more subjects. The NaryParser allows its subjects to be treated in the
+            same way as a single instance of a <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a> following the Composite
+            Design Pattern.
+          </p>
+<a name="spirit.qi.reference.parser_concepts.naryparser.refinement_of"></a><h6>
+<a name="id636707"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+                A NaryParser.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
+<dd><p>
+                A NaryParser type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.parser_concepts.naryparser.valid_expressions"></a><h6>
+<a name="id636786"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>, for any NaryParser the
+            following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">elements</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The tuple of elements.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    A Boost.Fusion
+                    Sequence of <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a> types.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.naryparser.type_expressions"></a><h6>
+<a name="id636909"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">elements_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Elements tuple type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_nary_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">P</span></code>
+                    is a NaryParser, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.naryparser.invariants"></a><h6>
+<a name="id638856"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.invariants">Invariants</a>
+          </h6>
+<p>
+            For each element, <code class="computeroutput"><span class="identifier">E</span></code>,
+            in any NaryParser, <code class="computeroutput"><span class="identifier">P</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.qi.reference.parser_concepts.naryparser.models"></a><h6>
+<a name="id638941"></a>
+            <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.models">Models</a>
+          </h6>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add links to models of NaryParser
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binaryparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../basics.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,273 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Parser</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="prev" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="next" href="primitiveparser.html" title="PrimitiveParser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitiveparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Parser">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.parser_concepts.parser"></a><a class="link" href="parser.html" title="Parser">Parser</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.parser_concepts.parser.description"></a><h6>
+<a name="id633653"></a>
+            <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.description">Description</a>
+          </h6>
+<p>
+            The <span class="emphasis"><em>Parser</em></span> is the most fundamental concept. A Parser
+            has a member function, <code class="computeroutput"><span class="identifier">parse</span></code>,
+            that accepts a first-last ForwardIterator pair and returns
+            bool as its result. The iterators delimit the data being parsed. The
+            Parser's <code class="computeroutput"><span class="identifier">parse</span></code> member
+            function returns <code class="computeroutput"><span class="keyword">true</span></code> if
+            the parse succeeds, in which case the first iterator is advanced accordingly.
+            Each Parser can represent a specific pattern or algorithm, or it can
+            be a more complex parser formed as a composition of other Parsers.
+          </p>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Parser</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">Parser</span></code> type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iter</span></code></span></dt>
+<dd><p>
+                a ForwardIterator type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code>,
+            <code class="computeroutput"><span class="identifier">l</span></code></span></dt>
+<dd><p>
+                ForwardIterator. first/last
+                iterator pair.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dd><p>
+                The parser's Context type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">context</span></code></span></dt>
+<dd><p>
+                The parser's Context, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">skip</span></code></span></dt>
+<dd><p>
+                A skip Parser, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">attrib</span></code></span></dt>
+<dd><p>
+                A Compatible Attribute, or <code class="computeroutput"><span class="identifier">unused</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.parser_concepts.parser.valid_expressions"></a><h6>
+<a name="id633923"></a>
+            <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In the expressions below, the behavior of the parser, <code class="computeroutput"><span class="identifier">p</span></code>,
+            how <code class="computeroutput"><span class="identifier">skip</span></code> and <code class="computeroutput"><span class="identifier">attrib</span></code> are handled by <code class="computeroutput"><span class="identifier">p</span></code>, are left unspecified in the base
+            <code class="computeroutput"><span class="identifier">Parser</span></code> concept. These
+            are specified in subsequent, more refined concepts and by the actual
+            models therof.
+          </p>
+<p>
+            For any Parser the following expressions must be valid:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">p</span><span class="special">.</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">context</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Match the input sequence starting from <code class="computeroutput"><span class="identifier">f</span></code>.
+                    Return <code class="computeroutput"><span class="keyword">true</span></code> if successful,
+                    otherwise return <code class="computeroutput"><span class="keyword">false</span></code>.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">bool</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">what</span><span class="special">(</span><span class="identifier">context</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Get information about a Parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">info</span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.parser.type_expressions"></a><h6>
+<a name="id634810"></a>
+            <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">attribute</span><span class="special"><</span><span class="identifier">Context</span><span class="special">,</span> <span class="identifier">Iter</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The Parser's expected attribute.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">P</span></code>
+                    is a Parser, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.parser.postcondition"></a><h6>
+<a name="id635008"></a>
+            <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.postcondition">Postcondition</a>
+          </h6>
+<p>
+            Upon return from <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">parse</span></code> the following post conditions
+            should hold:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+              On a successful match, <code class="computeroutput"><span class="identifier">f</span></code>
+              is positioned one past the first non-matching character/token.
+            </li>
+<li class="listitem">
+              On a failed match, if a <code class="computeroutput"><span class="identifier">skip</span></code>
+              parser is <code class="computeroutput"><span class="identifier">unused</span></code>,
+              <code class="computeroutput"><span class="identifier">f</span></code> is restored to its
+              original position prior to entry.
+            </li>
+<li class="listitem">
+              On a failed match, if a <code class="computeroutput"><span class="identifier">skip</span></code>
+              parser is not <code class="computeroutput"><span class="identifier">unused</span></code>,
+              <code class="computeroutput"><span class="identifier">f</span></code> is positioned one
+              past the first character/token not matching <code class="computeroutput"><span class="identifier">skip</span></code>.
+            </li>
+<li class="listitem">
+              On a failed match, <code class="computeroutput"><span class="identifier">attrib</span></code>
+              is left untouched.
+            </li>
+<li class="listitem">
+              No post-skips: trailing <code class="computeroutput"><span class="identifier">skip</span></code>
+              characters/tokens will not be skipped.
+            </li>
+</ul></div>
+<a name="spirit.qi.reference.parser_concepts.parser.models"></a><h6>
+<a name="id635135"></a>
+            <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.models">Models</a>
+          </h6>
+<p>
+            All parsers in Spirit.Qi are models of the <span class="emphasis"><em>Parser</em></span>
+            concept.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="primitiveparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,127 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>PrimitiveParser</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="prev" href="parser.html" title="Parser">
+<link rel="next" href="unaryparser.html" title="UnaryParser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unaryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="PrimitiveParser">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.parser_concepts.primitiveparser"></a><a class="link" href="primitiveparser.html" title="PrimitiveParser">PrimitiveParser</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.parser_concepts.primitiveparser.description"></a><h6>
+<a name="id635170"></a>
+            <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>PrimitiveParser</em></span> is the most basic building block
+            that the client uses to build more complex parsers.
+          </p>
+<a name="spirit.qi.reference.parser_concepts.primitiveparser.refinement_of"></a><h6>
+<a name="id635193"></a>
+            <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<a name="spirit.qi.reference.parser_concepts.primitiveparser.pre_skip"></a><h6>
+<a name="id635229"></a>
+            <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.pre_skip">Pre-skip</a>
+          </h6>
+<p>
+            Upon entry to the <code class="computeroutput"><span class="identifier">parse</span></code>
+            member function, a PrimitiveParser is required to do a pre-skip. Leading
+            <code class="computeroutput"><span class="identifier">skip</span></code> characters/tokens
+            will be skipped prior to parsing. Only PrimitiveParsers are required
+            to perform this pre-skip. This is typically carried out through a call
+            to <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span></code>:
+          </p>
+<pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">);</span>
+</pre>
+<a name="spirit.qi.reference.parser_concepts.primitiveparser.type_expressions"></a><h6>
+<a name="id635320"></a>
+            <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_primitive_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">P</span></code>,
+                    is a PrimitiveParser, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.primitiveparser.models"></a><h6>
+<a name="id635457"></a>
+            <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.models">Models</a>
+          </h6>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add links to <span class="emphasis"><em>PrimitiveParser</em></span>
+            models here.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="parser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="unaryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,202 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>UnaryParser</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../parser_concepts.html" title="Parser Concepts">
+<link rel="prev" href="primitiveparser.html" title="PrimitiveParser">
+<link rel="next" href="binaryparser.html" title="BinaryParser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitiveparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binaryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="UnaryParser">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.parser_concepts.unaryparser"></a><a class="link" href="unaryparser.html" title="UnaryParser">UnaryParser</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.description"></a><h6>
+<a name="id635498"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.description">Description</a>
+          </h6>
+<p>
+            <span class="emphasis"><em>UnaryParser</em></span> is a composite parser that has a single
+            subject. The UnaryParser may change the behavior of its subject following
+            the Delegate Design Pattern.
+          </p>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.refinement_of"></a><h6>
+<a name="id635523"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.refinement_of">Refinement
+            of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dd><p>
+                A UnaryParser.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
+<dd><p>
+                A UnaryParser type.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.valid_expressions"></a><h6>
+<a name="id635602"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.valid_expressions">Valid
+            Expressions</a>
+          </h6>
+<p>
+            In addition to the requirements defined in <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>, for any UnaryParser
+            the following must be met:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Return type
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">p</span><span class="special">.</span><span class="identifier">subject</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Subject parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <a class="link" href="parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.type_expressions"></a><h6>
+<a name="id635716"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.type_expressions">Type
+            Expressions</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">P</span><span class="special">::</span><span class="identifier">subject_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The subject parser type.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_unary_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">>::</span><span class="identifier">type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+                    if a certain type, <code class="computeroutput"><span class="identifier">P</span></code>
+                    is a UnaryParser, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+                    otherwise (See <a href="../../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                    Boolean Constant</a>).
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.invariants"></a><h6>
+<a name="id635884"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.invariants">Invariants</a>
+          </h6>
+<p>
+            For any UnaryParser, <code class="computeroutput"><span class="identifier">P</span></code>,
+            the following invariant always holds:
+          </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
+<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
+</li></ul></div>
+<a name="spirit.qi.reference.parser_concepts.unaryparser.models"></a><h6>
+<a name="id635969"></a>
+            <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.models">Models</a>
+          </h6>
+<p>
+            <span class="bold"><strong>FIXME</strong></span> Add links to models of UnaryParser
+            concept
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="primitiveparser.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../parser_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="binaryparser.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="operator/sequential_or.html" title="Sequential Or (a || b)">
+<link rel="next" href="string/string.html" title="String (string, lit)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator/sequential_or.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.string"></a><a class="link" href="string.html" title="String">String</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"> String (string, lit)</span></dt>
+<dt><span class="section"> Symbols (symbols)</span></dt>
+</dl></div>
+<p>
+          This module includes parsers for strings. Currently, this module includes
+          the literal and string parsers and the symbol table.
+        </p>
+<a name="spirit.qi.reference.string.module_header"></a><h6>
+<a name="id703877"></a>
+          <a class="link" href="string.html#spirit.qi.reference.string.module_header">Module Header</a>
+        </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_string</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="operator/sequential_or.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,351 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String (string, lit)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../string.html" title="String">
+<link rel="prev" href="../string.html" title="String">
+<link rel="next" href="symbols.html" title="Symbols (symbols)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="symbols.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String (string, lit)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.string.string"></a><a class="link" href="string.html" title="String (string, lit)"> String (<code class="computeroutput"><span class="identifier">string</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.string.string.description"></a><h6>
+<a name="id703975"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.description">Description</a>
+          </h6>
+<p>
+            The <code class="computeroutput"><span class="identifier">string</span></code> parser matches
+            a string of characters. The <code class="computeroutput"><span class="identifier">string</span></code>
+            parser is an implicit lexeme: the <code class="computeroutput"><span class="identifier">skip</span></code>
+            parser is not applied in between characters of the string. The <code class="computeroutput"><span class="identifier">string</span></code> parser has an assocaiated <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>. This is needed when doing basic operations
+            such as inhibiting case sensitivity. Examples:
+          </p>
+<pre class="programlisting"><span class="identifier">string</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">string</span><span class="special">(</span><span class="identifier">L</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="comment">// s is a std::string
+</span></pre>
+<p>
+            <code class="computeroutput"><span class="identifier">lit</span></code>, like <code class="computeroutput"><span class="identifier">string</span></code>, also matches a string of characters.
+            The main difference is that <code class="computeroutput"><span class="identifier">lit</span></code>
+            does not synthesize an attribute. A plain string like <code class="computeroutput"><span class="string">"hello"</span></code>
+            or a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code> is equivalent to a <code class="computeroutput"><span class="identifier">lit</span></code>. Examples:
+          </p>
+<pre class="programlisting"><span class="string">"Hello"</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">L</span><span class="string">"Hello"</span><span class="special">)</span>
+<span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="comment">// s is a std::string
+</span></pre>
+<a name="spirit.qi.reference.string.string.header"></a><h6>
+<a name="id705981"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string/lit.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_lit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<a name="spirit.qi.reference.string.string.namespace"></a><h6>
+<a name="id706047"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span> <span class="comment">// alias:
+                    boost::spirit::qi::lit</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<p>
+            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
+            is a <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+            Encoding Namespace</a>.
+          </p>
+<a name="spirit.qi.reference.string.string.model_of"></a><h6>
+<a name="id706166"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.string">String</a>
+                or a __lazy<span class="underline">argument</span>_ that evaluates
+                to a <a class="link" href="../basics.html#spirit.qi.reference.basics.string">String</a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+                Encoding Namespace</a>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.string.string.expression_semantics"></a><h6>
+<a name="id706262"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">s</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Create a string parser with <code class="computeroutput"><span class="identifier">ns</span></code>
+                    encoding from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.string.string.attributes"></a><h6>
+<a name="id706454"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.attributes">Attributes</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Attribute
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">s</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
+                    where <code class="computeroutput"><span class="identifier">T</span></code> is the
+                    underlying character type of <code class="computeroutput"><span class="identifier">s</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.string.string.complexity"></a><h6>
+<a name="id706657"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.complexity">Complexity</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(N)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            where <code class="computeroutput"><span class="identifier">N</span></code> is the number
+            of characters in the string to be parsed.
+          </p>
+<a name="spirit.qi.reference.string.string.example"></a><h6>
+<a name="id706692"></a>
+            <a class="link" href="string.html#spirit.qi.reference.string.string.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Basic literals:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="string">"boost"</span><span class="special">);</span>          <span class="comment">// plain literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span>     <span class="comment">// explicit literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span>  <span class="comment">// ascii::string
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            From a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">(</span><span class="string">"boost"</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">s</span><span class="special">);</span>            <span class="comment">// direct
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">));</span>       <span class="comment">// explicit
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">));</span>    <span class="comment">// ascii::string
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Lazy strings using Phoenix
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>        
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span>            <span class="comment">// direct
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">)));</span>       <span class="comment">// explicit
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">)));</span>    <span class="comment">// ascii::string
+</span></pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="symbols.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,624 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Symbols (symbols)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../string.html" title="String">
+<link rel="prev" href="string.html" title="String (string, lit)">
+<link rel="next" href="../../../karma.html" title="Karma - Writing Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../karma.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Symbols (symbols)">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.qi.reference.string.symbols"></a><a class="link" href="symbols.html" title="Symbols (symbols)"> Symbols (<code class="computeroutput"><span class="identifier">symbols</span></code>)</a>
+</h5></div></div></div>
+<a name="spirit.qi.reference.string.symbols.description"></a><h6>
+<a name="id707262"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.description">Description</a>
+          </h6>
+<p>
+            This class <code class="computeroutput"><span class="identifier">symbols</span></code> implements
+            a symbol table: an associative container (or map) of key-value pairs
+            where the keys are strings. The <code class="computeroutput"><span class="identifier">symbols</span></code>
+            class can work efficiently with 8, 16, 32 and even 64 bit characters.
+          </p>
+<p>
+            Traditionally, symbol table management is maintained seperately outside
+            the grammar through semantic actions. Contrary to standard practice,
+            the Spirit symbol table class symbols is-a parser. An instance of which
+            may be used anywhere in the grammar specification. It is an example of
+            a dynamic parser. A dynamic parser is characterized by its ability to
+            modify its behavior at run time. Initially, an empty symbols object matches
+            nothing. At any time, symbols may be added, thus, dynamically altering
+            its behavior.
+          </p>
+<a name="spirit.qi.reference.string.symbols.header"></a><h6>
+<a name="id707296"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.header">Header</a>
+          </h6>
+<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string/symbols.hpp>
+</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_symbols</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<a name="spirit.qi.reference.string.symbols.namespace"></a><h6>
+<a name="id707371"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th>
+                  <p>
+                    Name
+                  </p>
+                  </th></tr></thead>
+<tbody>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">tst</span></code>
+                  </p>
+                  </td></tr>
+<tr><td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">tst_map</span></code>
+                  </p>
+                  </td></tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.string.symbols.synopsis"></a><h6>
+<a name="id707530"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lookup</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">symbols</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.reference.string.symbols.template_parameters"></a><h6>
+<a name="id707608"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Char</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The character type of the symbol strings.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="keyword">char</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">T</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The data type associated with each symbol.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Lookup</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    The symbol search implementation
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">tst</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span>
+                    <span class="identifier">T</span><span class="special">></span></code>
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.string.symbols.model_of"></a><h6>
+<a name="id707792"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.model_of">Model of</a>
+          </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Sym</span></code></span></dt>
+<dd><p>
+                A <code class="computeroutput"><span class="identifier">symbols</span></code> type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Char</span></code></span></dt>
+<dd><p>
+                A character type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
+<dd><p>
+                A data type.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sym</span></code>,
+            <code class="computeroutput"><span class="identifier">sym2</span></code></span></dt>
+<dd><p>
+                <code class="computeroutput"><span class="identifier">symbols</span></code> objects.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sseq</span></code></span></dt>
+<dd><p>
+                An STL container
+                of strings.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dseq</span></code></span></dt>
+<dd><p>
+                An STL container
+                of data with <code class="computeroutput"><span class="identifier">value_type</span></code>
+                <code class="computeroutput"><span class="identifier">T</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code></span></dt>
+<dd><p>
+                A <a class="link" href="../basics.html#spirit.qi.reference.basics.string">String</a>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">d1</span></code>...<code class="computeroutput"><span class="identifier">dN</span></code></span></dt>
+<dd><p>
+                Objects of type <code class="computeroutput"><span class="identifier">T</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+                A callable function or function object.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.reference.string.symbols.expression_semantics"></a><h6>
+<a name="id708067"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<p>
+            Semantics of an expression is defined only where it differs from, or
+            is not defined in <a class="link" href="../parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Sym</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct an empty symbols.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sym</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Copy construct a symbols from <code class="computeroutput"><span class="identifier">sym2</span></code>
+                    (Another <code class="computeroutput"><span class="identifier">symbols</span></code>
+                    object).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sseq</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct symbols from <code class="computeroutput"><span class="identifier">sseq</span></code>
+                    (An STL container
+                    of strings).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sseq</span><span class="special">,</span>
+                    <span class="identifier">dseq</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Construct symbols from <code class="computeroutput"><span class="identifier">sseq</span></code>
+                    and <code class="computeroutput"><span class="identifier">dseq</span></code> (An
+                    STL container
+                    of strings and an STL
+                    container of data with <code class="computeroutput"><span class="identifier">value_type</span></code>
+                    <code class="computeroutput"><span class="identifier">T</span></code>).
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span> <span class="special">=</span>
+                    <span class="identifier">sym</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Assign <code class="computeroutput"><span class="identifier">sym2</span></code> to
+                    <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span> <span class="special">=</span>
+                    <span class="identifier">s1</span><span class="special">,</span>
+                    <span class="identifier">s2</span><span class="special">,...</span>
+                    <span class="identifier">sN</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Assigns one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span> <span class="special">+=</span>
+                    <span class="identifier">s1</span><span class="special">,</span>
+                    <span class="identifier">s2</span><span class="special">,...</span>
+                    <span class="identifier">sN</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">s1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span>
+                    <span class="identifier">d1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">,</span>
+                    <span class="identifier">d2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">,</span>
+                    <span class="identifier">dN</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) with associated data (<code class="computeroutput"><span class="identifier">d1</span></code>...<code class="computeroutput"><span class="identifier">dN</span></code>)
+                    to <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span> <span class="special">-=</span>
+                    <span class="identifier">s1</span><span class="special">,</span>
+                    <span class="identifier">s2</span><span class="special">,...</span>
+                    <span class="identifier">sN</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Remove one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) from <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">s1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Remove one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) from <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Erase all of the symbols in <code class="computeroutput"><span class="identifier">sym</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Returns a reference to the object associated with symbol, <code class="computeroutput"><span class="identifier">s</span></code>. If <code class="computeroutput"><span class="identifier">sym</span></code>
+                    does not already contain such an object, <code class="computeroutput"><span class="identifier">at</span></code>
+                    inserts the default object <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Returns a pointer to the object associated with symbol, <code class="computeroutput"><span class="identifier">s</span></code>. If <code class="computeroutput"><span class="identifier">sym</span></code>
+                    does not already contain such an object, <code class="computeroutput"><span class="identifier">find</span></code>
+                    returns a null pointer.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    For each symbol in <code class="computeroutput"><span class="identifier">sym</span></code>,
+                    <code class="computeroutput"><span class="identifier">s</span></code>, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special"><</span><span class="identifier">Char</span><span class="special">></span></code>
+                    with associated data, <code class="computeroutput"><span class="identifier">d</span></code>,
+                    an object of type <code class="computeroutput"><span class="identifier">T</span></code>,
+                    invoke <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span>
+                    <span class="identifier">d</span><span class="special">)</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.reference.string.symbols.attributes"></a><h6>
+<a name="id709177"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.attributes">Attributes</a>
+          </h6>
+<p>
+            The attribute of <code class="computeroutput"><span class="identifier">symbol</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span></code> is <code class="computeroutput"><span class="identifier">T</span></code>.
+          </p>
+<a name="spirit.qi.reference.string.symbols.complexity"></a><h6>
+<a name="id709228"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.complexity">Complexity</a>
+          </h6>
+<p>
+            The default implementation uses a Ternary Search Tree (TST) with complexity:
+          </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(log n+k)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            Where k is the length of the string to be searched and in a TST with
+            n strings.
+          </p>
+<p>
+            TSTs are faster than hashing for many typical search problems especially
+            when the search interface is iterator based. TSTs are many times faster
+            than hash tables for unsuccessful searches since mismatches are discovered
+            earlier after examining only a few characters. Hash tables always examine
+            an entire key when searching.
+          </p>
+<p>
+            An alternative implementation uses a hybrid hash-map front end (for the
+            first character) plus a TST: <code class="computeroutput"><span class="identifier">tst_map</span></code>.
+            This gives us a complexity of
+          </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+              </p>
+<p>
+                O(1 + log n+k-1)
+              </p>
+<p>
+            </p>
+</blockquote></div>
+<p>
+            This is found to be significantly faster than plain TST, albeit with
+            a bit more memory usage requirements (each slot in the hash-map is a
+            TST node). If you require a lot of symbols to be searched, use the <code class="computeroutput"><span class="identifier">tst_map</span></code> implementation. This can be
+            done by using <code class="computeroutput"><span class="identifier">tst_map</span></code>
+            as the third template parameter to the symbols class:
+          </p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">tst_map</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">sym</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.reference.string.symbols.example"></a><h6>
+<a name="id709367"></a>
+            <a class="link" href="symbols.html#spirit.qi.reference.string.symbols.example">Example</a>
+          </h6>
+<p>
+            Some using declarations:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            Symbols with data:
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">sym</span><span class="special">;</span>
+
+<span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
+    <span class="special">(</span><span class="string">"Apple"</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+    <span class="special">(</span><span class="string">"Banana"</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span>
+    <span class="special">(</span><span class="string">"Orange"</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
+<span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Banana"</span><span class="special">,</span> <span class="identifier">sym</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+<p>
+            When <code class="computeroutput"><span class="identifier">symbols</span></code> is used
+            for case-insensitive parsing (in a <a class="link" href="../directive/no_case.html" title="Inhibiting Case Sensitivity (no_case[])"><code class="computeroutput"><span class="identifier">no_case</span></code></a> directive), added symbol
+            strings should be in lowercase. Symbol strings containing one or more
+            uppercase characters will not match any input when symbols is used in
+            a <code class="computeroutput"><span class="identifier">no_case</span></code> directive.
+          </p>
+<p>
+            </p>
+<p>
+              
+</p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="identifier">sym</span><span class="special">;</span>
+
+<span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
+    <span class="special">(</span><span class="string">"apple"</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>    <span class="comment">// symbol strings are added in lowercase...
+</span>    <span class="special">(</span><span class="string">"banana"</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span>
+    <span class="special">(</span><span class="string">"orange"</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
+<span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="comment">// ...because sym is used for case-insensitive parsing
+</span><span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Apple"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"ORANGE"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+            </p>
+<p>
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="string.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../karma.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Tutorials</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi.html" title="Qi - Writing Parsers">
+<link rel="prev" href="../qi.html" title="Qi - Writing Parsers">
+<link rel="next" href="tutorials/quick_start.html" title="Quick Start">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../qi.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/quick_start.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Tutorials">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.qi.tutorials"></a><a class="link" href="tutorials.html" title="Tutorials">Tutorials</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">Quick Start</span></dt>
+<dt><span class="section">Warming up</span></dt>
+<dt><span class="section">Semantic Actions</span></dt>
+<dt><span class="section"><a href="tutorials/complex___our_first_complex_parser.html">Complex
+        - Our first complex parser</a></span></dt>
+<dt><span class="section"><a href="tutorials/sum___adding_numbers.html">Sum - adding
+        numbers</a></span></dt>
+<dt><span class="section"><a href="tutorials/number_list___stuffing_numbers_into_a_std__vector.html">Number
+        List - stuffing numbers into a std::vector</a></span></dt>
+<dt><span class="section"><a href="tutorials/number_list_redux___list_syntax.html">Number
+        List Redux - list syntax</a></span></dt>
+<dt><span class="section"><a href="tutorials/number_list_attribute___one_more__with_style.html">Number
+        List Attribute - one more, with style</a></span></dt>
+<dt><span class="section">Roman Numerals</span></dt>
+<dt><span class="section"><a href="tutorials/employee___parsing_into_structs.html">Employee
+        - Parsing into structs</a></span></dt>
+<dt><span class="section">Mini XML - ASTs!</span></dt>
+<dt><span class="section"><a href="tutorials/mini_xml___error_handling.html">Mini
+        XML - Error Handling</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../qi.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="tutorials/quick_start.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Complex - Our first complex parser</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="next" href="sum___adding_numbers.html" title="Sum - adding numbers">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sum___adding_numbers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Complex - Our first complex parser">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.complex___our_first_complex_parser"></a><a class="link" href="complex___our_first_complex_parser.html" title="Complex - Our first complex parser">Complex
+        - Our first complex parser</a>
+</h4></div></div></div>
+<p>
+          Well, not really a complex parser, but a parser that parses complex numbers.
+          This time, we're using Phoenix
+          to do the semantic actions.
+        </p>
+<p>
+          Here's a simple parser expression for complex numbers:
+        </p>
+<pre class="programlisting">    <span class="char">'('</span> <span class="special">>></span> <span class="identifier">double_</span> <span class="special">>></span> <span class="special">-(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">)</span> <span class="special">>></span> <span class="char">')'</span>
+<span class="special">|</span>   <span class="identifier">double_</span>
+</pre>
+<p>
+          What's new? Well, we have:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            Alternates: e.g. <code class="computeroutput"><span class="identifier">a</span> <span class="special">|</span>
+            <span class="identifier">b</span></code>. Try <code class="computeroutput"><span class="identifier">a</span></code>
+            first. If it succeeds, good. If not, try the next alternative, <code class="computeroutput"><span class="identifier">b</span></code>.
+          </li>
+<li class="listitem">
+            Optionals: e.g. -p. Match the parser p zero or one time.
+          </li>
+</ol></div>
+<p>
+          The complex parser presented above reads as:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            One or two real number in parantheses, separated by comma (the second
+            number is optional)
+          </li>
+<li class="listitem">
+<span class="bold"><strong>OR</strong></span> a single real number.
+          </li>
+</ul></div>
+<p>
+          This parser can parse complex numbers of the form:
+        </p>
+<pre class="programlisting"><span class="special">(</span><span class="number">123.45</span><span class="special">,</span> <span class="number">987.65</span><span class="special">)</span>
+<span class="special">(</span><span class="number">123.45</span><span class="special">)</span>
+<span class="number">123.45</span>
+</pre>
+<p>
+          Here goes, this time with actions:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">client</span>
+<span class="special">{</span>
+    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+    <span class="keyword">bool</span> <span class="identifier">parse_complex</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <span class="identifier">c</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+
+        <span class="keyword">double</span> <span class="identifier">rN</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+        <span class="keyword">double</span> <span class="identifier">iN</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
+        <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span>
+
+            <span class="comment">//  Begin grammar
+</span>            <span class="special">(</span>
+                    <span class="char">'('</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">rN</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+                        <span class="special">>></span> <span class="special">-(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">iN</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">])</span> <span class="special">>></span> <span class="char">')'</span>
+                <span class="special">|</span>   <span class="identifier">double_</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">rN</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+            <span class="special">),</span>
+            <span class="comment">//  End grammar
+</span>
+            <span class="identifier">space</span><span class="special">);</span>
+
+        <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">r</span> <span class="special">||</span> <span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>            <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+        <span class="identifier">c</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">complex</span><span class="special"><</span><span class="keyword">double</span><span class="special">>(</span><span class="identifier">rN</span><span class="special">,</span> <span class="identifier">iN</span><span class="special">);</span>
+        <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+    <span class="special">}</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/complex_number.cpp
+        </p>
+<p>
+          The <code class="computeroutput"><span class="identifier">double_</span></code> parser attaches
+          this action:
+        </p>
+<pre class="programlisting"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span>
+</pre>
+<p>
+          This assigns the parsed result (actually, the attribute of <code class="computeroutput"><span class="identifier">double_</span></code>) to n. <code class="computeroutput"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code>
+          tells Phoenix that <code class="computeroutput"><span class="identifier">n</span></code> is
+          a mutable reference. <code class="computeroutput"><span class="identifier">_1</span></code>
+          is a Phoenix placeholder for the parsed result attribute.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="sum___adding_numbers.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,435 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Employee - Parsing into structs</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="roman_numerals.html" title="Roman Numerals">
+<link rel="next" href="mini_xml___asts_.html" title="Mini XML - ASTs!">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="roman_numerals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mini_xml___asts_.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Employee - Parsing into structs">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.employee___parsing_into_structs"></a><a class="link" href="employee___parsing_into_structs.html" title="Employee - Parsing into structs">Employee
+        - Parsing into structs</a>
+</h4></div></div></div>
+<p>
+          It's a common question in the <a href="http://www.nabble.com/The-Spirit-Parser-Library-f3430.html" target="_top">Spirit
+          General List</a>: how do I parse and place the results into a C++ struct?
+          Of course, at this point, you already know various ways to do it, using
+          semantic actions. There are many ways to skin a cat. Spirit2, being fully
+          attributed, makes it even easier. The next example demonstrates some features
+          of Spirit2 that makes this easy. In the process, you'll learn about:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            More about attributes
+          </li>
+<li class="listitem">
+            Auto rules
+          </li>
+<li class="listitem">
+            Some more built-in parsers
+          </li>
+<li class="listitem">
+            Directives
+          </li>
+</ul></div>
+<p>
+          First, let's create a struct representing an employee:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">employee</span>
+<span class="special">{</span>
+    <span class="keyword">int</span> <span class="identifier">age</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">surname</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">forename</span><span class="special">;</span>
+    <span class="keyword">double</span> <span class="identifier">salary</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Then, we need to tell Boost.Fusion
+          about our employee struct to make it a first- class fusion citizen. If
+          you don't know fusion yet, it is a Boost
+          library for working with heterogenous collections of data, commonly referred
+          to as tuples. Spirit uses fusion extensively as part of its infrastructure.
+        </p>
+<p>
+          In fusion's view, a struct is just a form of a tuple. You can adapt any
+          struct to be a fully conforming fusion tuple:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_FUSION_ADAPT_STRUCT</span><span class="special">(</span>
+    <span class="identifier">client</span><span class="special">::</span><span class="identifier">employee</span><span class="special">,</span>
+    <span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">age</span><span class="special">)</span>
+    <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">surname</span><span class="special">)</span>
+    <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">forename</span><span class="special">)</span>
+    <span class="special">(</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">salary</span><span class="special">)</span>
+<span class="special">)</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Now we'll write a parser for our employee. Inputs will be of the form:
+        </p>
+<pre class="programlisting"><span class="identifier">employee</span><span class="special">{</span> <span class="identifier">age</span><span class="special">,</span> <span class="string">"surname"</span><span class="special">,</span> <span class="string">"forename"</span><span class="special">,</span> <span class="identifier">salary</span> <span class="special">}</span>
+</pre>
+<p>
+          Here goes:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">employee_parser</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">employee</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">employee_parser</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">employee_parser</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">int_</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+
+        <span class="identifier">quoted_string</span> <span class="special">%=</span> <span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">];</span>
+
+        <span class="identifier">start</span> <span class="special">%=</span>
+            <span class="identifier">lit</span><span class="special">(</span><span class="string">"employee"</span><span class="special">)</span>
+            <span class="special">>></span> <span class="char">'{'</span>
+            <span class="special">>></span>  <span class="identifier">int_</span> <span class="special">>></span> <span class="char">','</span>
+            <span class="special">>></span>  <span class="identifier">quoted_string</span> <span class="special">>></span> <span class="char">','</span>
+            <span class="special">>></span>  <span class="identifier">quoted_string</span> <span class="special">>></span> <span class="char">','</span>
+            <span class="special">>></span>  <span class="identifier">double_</span>
+            <span class="special">>></span>  <span class="char">'}'</span>
+            <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">quoted_string</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">employee</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/employee.cpp
+        </p>
+<p>
+          Let's walk through this one step at a time (not necessarily from top to
+          bottom).
+        </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">employee_parser</span> <span class="special">:</span> <span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">employee</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">employee_parser</span></code> is a grammar.
+          Like before, we make it a template so that we can reuse it for different
+          iterator types. The grammar's signature is:
+        </p>
+<pre class="programlisting"><span class="identifier">employee</span><span class="special">()</span>
+</pre>
+<p>
+          meaning, the parser generates employee structs. <code class="computeroutput"><span class="identifier">employee_parser</span></code>
+          skips white spaces using <code class="computeroutput"><span class="identifier">space_type</span></code>
+          as its skip parser.
+        </p>
+<pre class="programlisting"><span class="identifier">employee_parser</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">employee_parser</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">)</span>
+</pre>
+<p>
+          Initializes the base class.
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">quoted_string</span><span class="special">;</span>
+<span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">employee</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">start</span><span class="special">;</span>
+</pre>
+<p>
+          Declares two rules: <code class="computeroutput"><span class="identifier">quoted_string</span></code>
+          and <code class="computeroutput"><span class="identifier">start</span></code>. <code class="computeroutput"><span class="identifier">start</span></code> has the same template parameters
+          as the grammar itself. <code class="computeroutput"><span class="identifier">quoted_string</span></code>
+          has a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> attribute.
+        </p>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.lexeme"></a><h6>
+<a name="id610657"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.lexeme">Lexeme</a>
+        </h6>
+<pre class="programlisting"><span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">];</span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">lexeme</span></code> inhibits space skipping
+          from the open brace to the closing brace. The expression parses quoted
+          strings.
+        </p>
+<pre class="programlisting"><span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span>
+</pre>
+<p>
+          parses one or more chars, except the double quote. It stops when it sees
+          a double quote.
+        </p>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.difference"></a><h6>
+<a name="id610770"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.difference">Difference</a>
+        </h6>
+<p>
+          The expression:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span>
+</pre>
+<p>
+          parses <code class="computeroutput"><span class="identifier">a</span></code> but not <code class="computeroutput"><span class="identifier">b</span></code>. Its attribute is just <code class="computeroutput"><span class="identifier">A</span></code>, the attribute of <code class="computeroutput"><span class="identifier">a</span></code>.
+          <code class="computeroutput"><span class="identifier">b</span></code>'s attribute is ignored.
+          Hence, the attribute of:
+        </p>
+<pre class="programlisting"><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span>
+</pre>
+<p>
+          is just <code class="computeroutput"><span class="keyword">char</span></code>.
+        </p>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.plus"></a><h6>
+<a name="id610878"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.plus">Plus</a>
+        </h6>
+<pre class="programlisting"><span class="special">+</span><span class="identifier">a</span>
+</pre>
+<p>
+          is the close kin of the kleene star we got so used to in our tutorial.
+          Like it's kin, the kleene star, its attribute is a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span></code> where <code class="computeroutput"><span class="identifier">A</span></code>
+          is the attribute of <code class="computeroutput"><span class="identifier">a</span></code>.
+          So, putting all these together, the attribute of
+        </p>
+<pre class="programlisting"><span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span>
+</pre>
+<p>
+          is then:
+        </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
+</pre>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute"></a><h6>
+<a name="id611004"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute">Sequence
+          Attribute</a>
+        </h6>
+<p>
+          Now what's the attribute of
+        </p>
+<pre class="programlisting"><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span>
+</pre>
+<p>
+          ?
+        </p>
+<p>
+          Well, typically, the attribute of:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span> <span class="special">>></span> <span class="identifier">c</span>
+</pre>
+<p>
+          is:
+        </p>
+<pre class="programlisting"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span> <span class="identifier">C</span><span class="special">></span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">A</span></code> is the attribute
+          of <code class="computeroutput"><span class="identifier">a</span></code>, <code class="computeroutput"><span class="identifier">B</span></code>
+          is the attribute of <code class="computeroutput"><span class="identifier">b</span></code> and
+          <code class="computeroutput"><span class="identifier">C</span></code> is the attribute of
+          <code class="computeroutput"><span class="identifier">c</span></code>. What is <code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span></code>? - a tuple.
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            If you don't know what I am talking about, see: <a href="http://tinyurl.com/6xun4j" target="_top">Fusion
+            Vector</a>. It might be a good idea to have a look into Boost.Fusion
+            at this point. You'll definitely see more of it in the coming pages.
+          </p></td></tr>
+</table></div>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing"></a><h6>
+<a name="id611226"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing">Attribute
+          Collapsing</a>
+        </h6>
+<p>
+          Some parsers, especially those very little literal parsers you see, like
+          <code class="computeroutput"><span class="char">'"'</span></code>, do not have attributes.
+        </p>
+<p>
+          Nodes without attributes are disregarded. In a sequence, like above, all
+          nodes with no attributes are filtered out of the <code class="computeroutput"><span class="identifier">fusion</span><span class="special">:</span><span class="identifier">vector</span></code>.
+          So, since <code class="computeroutput"><span class="char">'"'</span></code> has no attribute,
+          and <code class="computeroutput"><span class="special">+(</span><span class="identifier">char_</span>
+          <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span></code> has a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span></code> attribute, the whole expression's attribute
+          should have been:
+        </p>
+<pre class="programlisting"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span> <span class="special">></span>
+</pre>
+<p>
+          But wait, there's one more collapsing rule: If after the attribute is a
+          single element <code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span></code>, The element is stripped naked
+          from its container. So, to make a long story short, the attribute of the
+          expression:
+        </p>
+<pre class="programlisting"><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span>
+</pre>
+<p>
+          is:
+        </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
+</pre>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.auto_rules"></a><h6>
+<a name="id611465"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.auto_rules">Auto
+          Rules</a>
+        </h6>
+<p>
+          It is typical to see rules like:
+        </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">p</span><span class="special">[</span><span class="identifier">_val</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">];</span>
+</pre>
+<p>
+          If you have a rule definition like above where the attribute of the RHS
+          (right hand side) of the rule is compatibe with the attribute of the LHS
+          (left hand side), then you can rewrite it as:
+        </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">%=</span> <span class="identifier">p</span><span class="special">;</span>
+</pre>
+<p>
+          The attribute of <code class="computeroutput"><span class="identifier">p</span></code> automatically
+          uses the attribute of <code class="computeroutput"><span class="identifier">r</span></code>.
+        </p>
+<p>
+          So, going back to our <code class="computeroutput"><span class="identifier">quoted_string</span></code>
+          rule:
+        </p>
+<pre class="programlisting"><span class="identifier">quoted_string</span> <span class="special">%=</span> <span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">];</span>
+</pre>
+<p>
+          is a simplified version of:
+        </p>
+<pre class="programlisting"><span class="identifier">quoted_string</span> <span class="special">=</span> <span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">][</span><span class="identifier">val_</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">];</span>
+</pre>
+<p>
+          The attribute of the <code class="computeroutput"><span class="identifier">quoted_string</span></code>
+          rule: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> <span class="bold"><strong>is compatible</strong></span>
+          with the attribute of the RHS: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span></code>. The RHS extracts the parsed attribute
+          directly into the rule's attribute, in-situ.
+        </p>
+<a name="spirit.qi.tutorials.employee___parsing_into_structs.finally"></a><h6>
+<a name="id612194"></a>
+          <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.finally">Finally</a>
+        </h6>
+<p>
+          We're down to one rule, the start rule:
+        </p>
+<pre class="programlisting"><span class="identifier">start</span> <span class="special">%=</span>
+    <span class="identifier">lit</span><span class="special">(</span><span class="string">"employee"</span><span class="special">)</span>
+    <span class="special">>></span> <span class="char">'{'</span>
+    <span class="special">>></span>  <span class="identifier">int_</span> <span class="special">>></span> <span class="char">','</span>
+    <span class="special">>></span>  <span class="identifier">quoted_string</span> <span class="special">>></span> <span class="char">','</span>
+    <span class="special">>></span>  <span class="identifier">quoted_string</span> <span class="special">>></span> <span class="char">','</span>
+    <span class="special">>></span>  <span class="identifier">double_</span>
+    <span class="special">>></span>  <span class="char">'}'</span>
+    <span class="special">;</span>
+</pre>
+<p>
+          Applying our collapsing rules above, the RHS has an attribute of:
+        </p>
+<pre class="programlisting"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span>
+</pre>
+<p>
+          These nodes do not have an attribute:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"employee"</span><span class="special">)</span></code></li>
+<li class="listitem"><code class="computeroutput"><span class="char">'{'</span></code></li>
+<li class="listitem"><code class="computeroutput"><span class="char">'}'</span></code></li>
+</ul></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            In case you are wondering, <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"employee"</span><span class="special">)</span></code> is the same as "employee".
+            We had to wrap it inside <code class="computeroutput"><span class="identifier">lit</span></code>
+            because immediately after it is <code class="computeroutput"><span class="special">>></span>
+            <span class="char">'{'</span></code>. You can't right-shift a <code class="computeroutput"><span class="keyword">char</span><span class="special">[]</span></code>
+            and a <code class="computeroutput"><span class="keyword">char</span></code> - you know, C++
+            syntax rules.
+          </p></td></tr>
+</table></div>
+<p>
+          Recall that the attribute of <code class="computeroutput"><span class="identifier">start</span></code>
+          is the <code class="computeroutput"><span class="identifier">employee</span></code> struct:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">employee</span>
+<span class="special">{</span>
+    <span class="keyword">int</span> <span class="identifier">age</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">surname</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">forename</span><span class="special">;</span>
+    <span class="keyword">double</span> <span class="identifier">salary</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Now everything is clear, right? The <code class="computeroutput"><span class="keyword">struct</span>
+          <span class="identifier">employee</span></code> <span class="bold"><strong>IS</strong></span>
+          compatible with <code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span></code>. So, the RHS of <code class="computeroutput"><span class="identifier">start</span></code>
+          uses start's attribute (a <code class="computeroutput"><span class="keyword">struct</span>
+          <span class="identifier">employee</span></code>) in-situ when it does
+          its work.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="roman_numerals.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mini_xml___asts_.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,521 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Mini XML - ASTs!</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="employee___parsing_into_structs.html" title="Employee - Parsing into structs">
+<link rel="next" href="mini_xml___error_handling.html" title="Mini XML - Error Handling">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="employee___parsing_into_structs.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mini_xml___error_handling.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Mini XML - ASTs!">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.mini_xml___asts_"></a><a class="link" href="mini_xml___asts_.html" title="Mini XML - ASTs!">Mini XML - ASTs!</a>
+</h4></div></div></div>
+<p>
+          Stop and think about it... We've come very close to generating an AST in
+          our last example. We parsed a single structure and generated an in-memory
+          representation of it in the form of a struct: the <code class="computeroutput"><span class="keyword">struct</span>
+          <span class="identifier">employee</span></code>. If we changed the implementation
+          to parse one or more employees, the result would be a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">employee</span><span class="special">></span></code>. We can go on and add more hierarchy:
+          teams, departments, corporations. Then we'll have an AST representation
+          of it all.
+        </p>
+<p>
+          In this example (actually two examples), we'll now explore parsers how
+          to create ASTs. We will parse a minimalistic XML like language and compile
+          the results into our data structures in the form of a tree.
+        </p>
+<p>
+          Along the way, we'll see new features:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Inherited attributes
+          </li>
+<li class="listitem">
+            Variant attributes
+          </li>
+<li class="listitem">
+            Local Variables
+          </li>
+<li class="listitem">
+            Not Predicate
+          </li>
+<li class="listitem">
+            Lazy Lit
+          </li>
+</ul></div>
+<p>
+          The full cpp files for these examples can be found here: ../../example/qi/mini_xml1.cpp
+          and here: ../../example/qi/mini_xml2.cpp
+        </p>
+<p>
+          There are a couple of sample toy-xml files in: ../../example/qi/mini_xml_samples
+          for testing purposes. "4.toyxml" has an error in it.
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.first_cut"></a><h6>
+<a name="id612842"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.first_cut">First Cut</a>
+        </h6>
+<p>
+          Without further delay, here's the first version of the XML grammar:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">mini_xml_grammar</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">mini_xml_grammar</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">mini_xml_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">xml</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">labels</span><span class="special">;</span>
+
+        <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">at_c</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">;</span>
+
+        <span class="identifier">text</span> <span class="special">=</span> <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'<'</span><span class="special">)</span>        <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]];</span>
+        <span class="identifier">node</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">xml</span> <span class="special">|</span> <span class="identifier">text</span><span class="special">)</span>                 <span class="special">[</span><span class="identifier">_val</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">];</span>
+
+        <span class="identifier">start_tag</span> <span class="special">=</span>
+                <span class="char">'<'</span>
+            <span class="special">>></span>  <span class="special">!</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'/'</span><span class="special">)</span>
+            <span class="special">>></span>  <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'>'</span><span class="special">)</span>       <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]]</span>
+            <span class="special">>></span>  <span class="char">'>'</span>
+        <span class="special">;</span>
+
+        <span class="identifier">end_tag</span> <span class="special">=</span>
+                <span class="string">"</"</span>
+            <span class="special">>></span>  <span class="identifier">string</span><span class="special">(</span><span class="identifier">_r1</span><span class="special">)</span>
+            <span class="special">>></span>  <span class="char">'>'</span>
+        <span class="special">;</span>
+
+        <span class="identifier">xml</span> <span class="special">=</span>
+                <span class="identifier">start_tag</span>                   <span class="special">[</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+            <span class="special">>></span>  <span class="special">*</span><span class="identifier">node</span>                       <span class="special">[</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)]</span>
+            <span class="special">>></span>  <span class="identifier">end_tag</span><span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">))</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">xml</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">node</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">text</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">start_tag</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">end_tag</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Going bottom up, let's examine the <code class="computeroutput"><span class="identifier">text</span></code>
+          rule:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">text</span><span class="special">;</span>
+</pre>
+<p>
+          and its definition:
+        </p>
+<pre class="programlisting"><span class="identifier">text</span> <span class="special">=</span> <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'<'</span><span class="special">)</span>        <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]];</span>
+</pre>
+<p>
+          The semantic action collects the chars and appends them (via +=) to the
+          <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> attribute of the rule (represented
+          by the placeholder <code class="computeroutput"><span class="identifier">_val</span></code>).
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.alternates"></a><h6>
+<a name="id614023"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.alternates">Alternates</a>
+        </h6>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">node</span><span class="special">;</span>
+</pre>
+<p>
+          and its definition:
+        </p>
+<pre class="programlisting"><span class="identifier">node</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">xml</span> <span class="special">|</span> <span class="identifier">text</span><span class="special">)</span>                 <span class="special">[</span><span class="identifier">_val</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">];</span>
+</pre>
+<p>
+          We'll see what a <code class="computeroutput"><span class="identifier">mini_xml_node</span></code>
+          structure later. Looking at the rule definition, we see some alternation
+          goiing on here. An xml <code class="computeroutput"><span class="identifier">node</span></code>
+          is either an <code class="computeroutput"><span class="identifier">xml</span></code> OR <code class="computeroutput"><span class="identifier">text</span></code>. Hmmm... hold on to that thought...
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">start_tag</span><span class="special">;</span>
+</pre>
+<p>
+          Again, with an attribute of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>.
+          Then, it's definition:
+        </p>
+<pre class="programlisting"><span class="identifier">start_tag</span> <span class="special">=</span>
+        <span class="char">'<'</span>
+    <span class="special">>></span>  <span class="special">!</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'/'</span><span class="special">)</span>
+    <span class="special">>></span>  <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'>'</span><span class="special">)</span>       <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]]</span>
+    <span class="special">>></span>  <span class="char">'>'</span>
+<span class="special">;</span>
+</pre>
+<a name="spirit.qi.tutorials.mini_xml___asts_.not_predicate"></a><h6>
+<a name="id615447"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.not_predicate">Not
+          Predicate</a>
+        </h6>
+<p>
+          <code class="computeroutput"><span class="identifier">start_tag</span></code> is similar to
+          the <code class="computeroutput"><span class="identifier">text</span></code> rule apart from
+          the added <code class="computeroutput"><span class="char">'<'</span></code> and <code class="computeroutput"><span class="char">'>'</span></code>. But wait, to make sure that the <code class="computeroutput"><span class="identifier">start_tag</span></code> does not parse <code class="computeroutput"><span class="identifier">end_tag</span></code>s too, we add: <code class="computeroutput"><span class="special">!</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'/'</span><span class="special">)</span></code>. This
+          is a "Not Predicate":
+        </p>
+<pre class="programlisting"><span class="special">!</span><span class="identifier">p</span>
+</pre>
+<p>
+          It will try the parser, <code class="computeroutput"><span class="identifier">p</span></code>.
+          If it is successful, fail, otherwise, pass. In other words, it negates
+          the result of <code class="computeroutput"><span class="identifier">p</span></code>. Like the
+          <code class="computeroutput"><span class="identifier">eps</span></code>, it does not consume
+          any input though. It will always rewind the iterator position to where
+          it was upon entry. So, the expression:
+        </p>
+<pre class="programlisting"><span class="special">!</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'/'</span><span class="special">)</span>
+</pre>
+<p>
+          basically says: we should not have a <code class="computeroutput"><span class="char">'/'</span></code>
+          at this point.
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.inherited_attribute"></a><h6>
+<a name="id615602"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.inherited_attribute">Inherited
+          Attribute</a>
+        </h6>
+<p>
+          The <code class="computeroutput"><span class="identifier">end_tag</span></code>:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">end_tag</span><span class="special">;</span>
+</pre>
+<p>
+          Ohh! Now we see an inherited attribute there: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>.
+          The <code class="computeroutput"><span class="identifier">end_tag</span></code> does not have
+          a synthesized attribute. Let's see its definition:
+        </p>
+<pre class="programlisting"><span class="identifier">end_tag</span> <span class="special">=</span>
+        <span class="string">"</"</span>
+    <span class="special">>></span>  <span class="identifier">lit</span><span class="special">(</span><span class="identifier">_r1</span><span class="special">)</span>
+    <span class="special">>></span>  <span class="char">'>'</span>
+<span class="special">;</span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">_r1</span></code> is yet another Phoenix placeholder for
+          the 1st inherited attribute (we have only one, use <code class="computeroutput"><span class="identifier">_r2</span></code>,
+          <code class="computeroutput"><span class="identifier">_r3</span></code>, etc. if you have more).
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit"></a><h6>
+<a name="id615797"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit">A Lazy
+          Lit</a>
+        </h6>
+<p>
+          Check out how we used <code class="computeroutput"><span class="identifier">lit</span></code>
+          here, this time, not with a literal string, but with the value of the 1st
+          inherited attribute, which is specified as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+          in our rule declaration.
+        </p>
+<p>
+          Finally, our <code class="computeroutput"><span class="identifier">xml</span></code> rule:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">xml</span><span class="special">;</span>
+</pre>
+<p>
+          <code class="computeroutput"><span class="identifier">mini_xml</span></code> is our attribute
+          here. We'll see later what it is. Let's see its definition:
+        </p>
+<pre class="programlisting"><span class="identifier">xml</span> <span class="special">=</span>
+        <span class="identifier">start_tag</span>                   <span class="special">[</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+    <span class="special">>></span>  <span class="special">*</span><span class="identifier">node</span>                       <span class="special">[</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)]</span>
+    <span class="special">>></span>  <span class="identifier">end_tag</span><span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">))</span>
+<span class="special">;</span>
+</pre>
+<p>
+          Those who know Boost.Fusion
+          now will notice <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">></span></code> and
+          <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">></span></code>. This
+          gives us a hint that <code class="computeroutput"><span class="identifier">mini_xml</span></code>
+          is a sort of a tuple - a fusion sequence. <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span></code> here is a lazy version of the tuple
+          accessors, provided by Phoenix.
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.how_it_all_works"></a><h6>
+<a name="id616128"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.how_it_all_works">How
+          it all works</a>
+        </h6>
+<p>
+          So, what's happening?
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            Upon parsing <code class="computeroutput"><span class="identifier">start_tag</span></code>,
+            the parsed start-tag string is placed in <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span></code>.
+          </li>
+<li class="listitem">
+            Then we parse zero or more <code class="computeroutput"><span class="identifier">node</span></code>s.
+            At each step, we <code class="computeroutput"><span class="identifier">push_back</span></code>
+            the result into <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">1</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span></code>.
+          </li>
+<li class="listitem">
+            Finally, we parse the <code class="computeroutput"><span class="identifier">end_tag</span></code>
+            giving it an inherited attribute: <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span></code>.
+            This is the string we obtained from the <code class="computeroutput"><span class="identifier">start_tag</span></code>.
+            Investigate <code class="computeroutput"><span class="identifier">end_tag</span></code> above.
+            It will fail to parse if it gets something different from what we got
+            from the <code class="computeroutput"><span class="identifier">start_tag</span></code>. This
+            ensures that our tags are balanced.
+          </li>
+</ol></div>
+<p>
+          To give the last item some more light, what happens is this:
+        </p>
+<pre class="programlisting"><span class="identifier">end_tag</span><span class="special">(</span><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">))</span>
+</pre>
+<p>
+          calls:
+        </p>
+<pre class="programlisting"><span class="identifier">end_tag</span> <span class="special">=</span>
+        <span class="string">"</"</span>
+    <span class="special">>></span>  <span class="identifier">lit</span><span class="special">(</span><span class="identifier">_r1</span><span class="special">)</span>
+    <span class="special">>></span>  <span class="char">'>'</span>
+<span class="special">;</span>
+</pre>
+<p>
+          passing in <code class="computeroutput"><span class="identifier">at_c</span><span class="special"><</span><span class="number">0</span><span class="special">>(</span><span class="identifier">_val</span><span class="special">)</span></code>, the string from start tag. This is referred
+          to in the <code class="computeroutput"><span class="identifier">end_tag</span></code> body
+          as <code class="computeroutput"><span class="identifier">_r1</span></code>.
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.the_structures"></a><h6>
+<a name="id616424"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.the_structures">The
+          Structures</a>
+        </h6>
+<p>
+          Let's see our structures. It will definitely be hierarchical: xml is hierarchical.
+          It will also be recursive: xml is recursive.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">mini_xml</span><span class="special">;</span>
+
+<span class="keyword">typedef</span>
+    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span>
+        <span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_wrapper</span><span class="special"><</span><span class="identifier">mini_xml</span><span class="special">></span>
+      <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span>
+    <span class="special">></span>
+<span class="identifier">mini_xml_node</span><span class="special">;</span>
+
+<span class="keyword">struct</span> <span class="identifier">mini_xml</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">name</span><span class="special">;</span>                           <span class="comment">// tag name
+</span>    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">mini_xml_node</span><span class="special">></span> <span class="identifier">children</span><span class="special">;</span>        <span class="comment">// children
+</span><span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants"></a><h6>
+<a name="id616620"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants">Of
+          Alternates and Variants</a>
+        </h6>
+<p>
+          So that's how a <code class="computeroutput"><span class="identifier">mini_xml_node</span></code>
+          looks like. We had a hint that it is either a <code class="computeroutput"><span class="identifier">string</span></code>
+          or a <code class="computeroutput"><span class="identifier">mini_xml</span></code>. For this,
+          we use Boost.Variant.
+          <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">recursive_wrapper</span></code> wraps <code class="computeroutput"><span class="identifier">mini_xml</span></code>, making it a recursive data
+          structure.
+        </p>
+<p>
+          Yep, you got that right: the attribute of an alternate:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span>
+</pre>
+<p>
+          is a
+        </p>
+<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span>
+</pre>
+<p>
+          where <code class="computeroutput"><span class="identifier">A</span></code> is the attribute
+          of <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">B</span></code> is the attribute of <code class="computeroutput"><span class="identifier">b</span></code>.
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again"></a><h6>
+<a name="id616784"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again">Adapting
+          structs again</a>
+        </h6>
+<p>
+          <code class="computeroutput"><span class="identifier">mini_xml</span></code> is no brainier.
+          It is a plain ol' struct. But as we've seen in our employee example, we
+          can adapt that to be a Boost.Fusion
+          sequence:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_FUSION_ADAPT_STRUCT</span><span class="special">(</span>
+    <span class="identifier">client</span><span class="special">::</span><span class="identifier">mini_xml</span><span class="special">,</span>
+    <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">,</span> <span class="identifier">name</span><span class="special">)</span>
+    <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="identifier">client</span><span class="special">::</span><span class="identifier">mini_xml_node</span><span class="special">>,</span> <span class="identifier">children</span><span class="special">)</span>
+<span class="special">)</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.one_more_take"></a><h6>
+<a name="id616925"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.one_more_take">One
+          More Take</a>
+        </h6>
+<p>
+          Here's another version. The AST structure remains the same, but this time,
+          you'll see that we make use of auto-rules making the grammar semantic-action-
+          less. Here it is:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">mini_xml_grammar</span>
+  <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">locals</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>,</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">mini_xml_grammar</span><span class="special">()</span>
+      <span class="special">:</span> <span class="identifier">mini_xml_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">xml</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lexeme</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">labels</span><span class="special">;</span>
+
+        <span class="identifier">text</span> <span class="special">%=</span> <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'<'</span><span class="special">)];</span>
+        <span class="identifier">node</span> <span class="special">%=</span> <span class="identifier">xml</span> <span class="special">|</span> <span class="identifier">text</span><span class="special">;</span>
+
+        <span class="identifier">start_tag</span> <span class="special">%=</span>
+                <span class="char">'<'</span>
+            <span class="special">>></span>  <span class="special">!</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'/'</span><span class="special">)</span>
+            <span class="special">>></span>  <span class="identifier">lexeme</span><span class="special">[+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'>'</span><span class="special">)]</span>
+            <span class="special">>></span>  <span class="char">'>'</span>
+        <span class="special">;</span>
+
+        <span class="identifier">end_tag</span> <span class="special">=</span>
+                <span class="string">"</"</span>
+            <span class="special">>></span>  <span class="identifier">string</span><span class="special">(</span><span class="identifier">_r1</span><span class="special">)</span>
+            <span class="special">>></span>  <span class="char">'>'</span>
+        <span class="special">;</span>
+
+        <span class="identifier">xml</span> <span class="special">%=</span>
+                <span class="identifier">start_tag</span><span class="special">[</span><span class="identifier">_a</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+            <span class="special">>></span>  <span class="special">*</span><span class="identifier">node</span>
+            <span class="special">>></span>  <span class="identifier">end_tag</span><span class="special">(</span><span class="identifier">_a</span><span class="special">)</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">locals</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>,</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">xml</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">node</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">text</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">(),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">start_tag</span><span class="special">;</span>
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">),</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space_type</span><span class="special">></span> <span class="identifier">end_tag</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          This one shouldn't be any more difficult to understand after going through
+          the first xml parser example. The rules are almost the same, except that,
+          we got rid of semantic actions and used auto-rules (see the employee example
+          if you missed that). There are a couple of new stuff, though. It's all
+          in the <code class="computeroutput"><span class="identifier">xml</span></code> rule:
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___asts_.local_variables"></a><h6>
+<a name="id618387"></a>
+          <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.local_variables">Local
+          Variables</a>
+        </h6>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml</span><span class="special">(),</span> <span class="identifier">locals</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>,</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">xml</span><span class="special">;</span>
+</pre>
+<p>
+          Wow, we have four template parameters now. What's that <code class="computeroutput"><span class="identifier">locals</span></code>
+          guy doing there? Well, it declares that the rule <code class="computeroutput"><span class="identifier">xml</span></code>
+          will have one local variable: a <code class="computeroutput"><span class="identifier">string</span></code>.
+          Let's see how this is used in action:
+        </p>
+<pre class="programlisting"><span class="identifier">xml</span> <span class="special">%=</span>
+        <span class="identifier">start_tag</span><span class="special">[</span><span class="identifier">_a</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span>
+    <span class="special">>></span>  <span class="special">*</span><span class="identifier">node</span>
+    <span class="special">>></span>  <span class="identifier">end_tag</span><span class="special">(</span><span class="identifier">_a</span><span class="special">)</span>
+<span class="special">;</span>
+</pre>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            Upon parsing <code class="computeroutput"><span class="identifier">start_tag</span></code>,
+            the parsed start-tag string is placed in the local variable specified
+            by (yet another) Phoenix
+            placeholder: <code class="computeroutput"><span class="identifier">_a</span></code>. We have
+            only one local variable. If we had more, these are designated by <code class="computeroutput"><span class="identifier">_b</span></code>..<code class="computeroutput"><span class="identifier">_z</span></code>.
+          </li>
+<li class="listitem">
+            Then we parse zero or more <code class="computeroutput"><span class="identifier">node</span></code>s.
+          </li>
+<li class="listitem">
+            Finally, we parse the <code class="computeroutput"><span class="identifier">end_tag</span></code>
+            giving it an inherited attribute: <code class="computeroutput"><span class="identifier">_a</span></code>,
+            our local variable.
+          </li>
+</ol></div>
+<p>
+          There are no actions involved in stuffing data into our <code class="computeroutput"><span class="identifier">xml</span></code>
+          attribute. It's all taken cared of thatnks to the auto-rule.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="employee___parsing_into_structs.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="mini_xml___error_handling.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,301 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Mini XML - Error Handling</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="mini_xml___asts_.html" title="Mini XML - ASTs!">
+<link rel="next" href="../quick_reference.html" title="Quick Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mini_xml___asts_.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Mini XML - Error Handling">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.mini_xml___error_handling"></a><a class="link" href="mini_xml___error_handling.html" title="Mini XML - Error Handling">Mini
+        XML - Error Handling</a>
+</h4></div></div></div>
+<p>
+          A parser will not be complete without error handling. Spirit2 provides
+          some facilities to make it easy to adapt a grammar for error handling.
+          We'll wrap up the Qi tutorial with another version of the mini xml parser,
+          this time, with error handling.
+        </p>
+<p>
+          ../../example/qi/mini_xml1.cpp
+          and here: ../../example/qi/mini_xml2.cpp
+        </p>
+<p>
+          Here's the grammar:
+        </p>
+<p>
+          What's new?
+        </p>
+<a name="spirit.qi.tutorials.mini_xml___error_handling.readable_names"></a><h6>
+<a name="id618692"></a>
+          <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.readable_names">Readable
+          Names</a>
+        </h6>
+<p>
+          First, when we call the base class, we give the grammar a name:
+        </p>
+<pre class="programlisting"><span class="special">:</span> <span class="identifier">mini_xml_grammar</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">xml</span><span class="special">,</span> <span class="string">"xml"</span><span class="special">)</span>
+</pre>
+<p>
+          Then, we name all our rules:
+        </p>
+<pre class="programlisting"><span class="identifier">xml</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"xml"</span><span class="special">);</span>
+<span class="identifier">node</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"node"</span><span class="special">);</span>
+<span class="identifier">text</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"text"</span><span class="special">);</span>
+<span class="identifier">start_tag</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"start_tag"</span><span class="special">);</span>
+<span class="identifier">end_tag</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"end_tag"</span><span class="special">);</span>
+</pre>
+<a name="spirit.qi.tutorials.mini_xml___error_handling.on_error"></a><h6>
+<a name="id618872"></a>
+          <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.on_error">On
+          Error</a>
+        </h6>
+<p>
+          <code class="computeroutput"><span class="identifier">on_error</span></code> declares our error
+          handler:
+        </p>
+<pre class="programlisting"><span class="identifier">on_error</span><span class="special"><</span><span class="identifier">Action</span><span class="special">>(</span><span class="identifier">rule</span><span class="special">,</span> <span class="identifier">handler</span><span class="special">)</span>
+</pre>
+<p>
+          This will specify what we will do when we get an error. We will print out
+          an error message using phoenix:
+        </p>
+<pre class="programlisting"><span class="identifier">on_error</span><span class="special"><</span><span class="identifier">fail</span><span class="special">></span>
+<span class="special">(</span>
+    <span class="identifier">xml</span>
+  <span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
+        <span class="special"><<</span> <span class="identifier">val</span><span class="special">(</span><span class="string">"Error! Expecting "</span><span class="special">)</span>
+        <span class="special"><<</span> <span class="identifier">_4</span>                               <span class="comment">// what failed?
+</span>        <span class="special"><<</span> <span class="identifier">val</span><span class="special">(</span><span class="string">" here: \""</span><span class="special">)</span>
+        <span class="special"><<</span> <span class="identifier">construct</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">>(</span><span class="identifier">_3</span><span class="special">,</span> <span class="identifier">_2</span><span class="special">)</span>   <span class="comment">// iterators to error-pos, end
+</span>        <span class="special"><<</span> <span class="identifier">val</span><span class="special">(</span><span class="string">"\""</span><span class="special">)</span>
+        <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
+<span class="special">);</span>
+</pre>
+<p>
+          we choose to <code class="computeroutput"><span class="identifier">fail</span></code> in our
+          example for the <code class="computeroutput"><span class="identifier">Action</span></code>:
+          Quit and fail. Return a no_match (false). It can be one of:
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  <code class="computeroutput"><span class="identifier">Action</span></code>
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  fail
+                </p>
+                </td>
+<td>
+                <p>
+                  Quit and fail. Return a no_match.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  retry
+                </p>
+                </td>
+<td>
+                <p>
+                  Attempt error recovery, possibly moving the iterator position.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  accept
+                </p>
+                </td>
+<td>
+                <p>
+                  Force success, moving the iterator position appropriately.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  rethrow
+                </p>
+                </td>
+<td>
+                <p>
+                  Rethrows the error.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+          <code class="computeroutput"><span class="identifier">rule</span></code> is the rule we attach
+          the handler to. In our case, we are attaching to the <code class="computeroutput"><span class="identifier">xml</span></code>
+          rule.
+        </p>
+<p>
+          <code class="computeroutput"><span class="identifier">handler</span></code> is the actual error
+          handling function. It expects 4 arguments:
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Arg
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  first
+                </p>
+                </td>
+<td>
+                <p>
+                  The position of the iterator when the rule with the handler was
+                  entered.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  last
+                </p>
+                </td>
+<td>
+                <p>
+                  The end of input.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  error-pos
+                </p>
+                </td>
+<td>
+                <p>
+                  The actual position of the iterator where the error occurred.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  what
+                </p>
+                </td>
+<td>
+                <p>
+                  What failed: a string decribing the failure.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.tutorials.mini_xml___error_handling.expectation_points"></a><h6>
+<a name="id619380"></a>
+          <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.expectation_points">Expectation
+          Points</a>
+        </h6>
+<p>
+          You might not have noticed it, but some of our expressions changed from
+          using the <code class="computeroutput"><span class="special">>></span></code> to <code class="computeroutput"><span class="special">></span></code>. Look, for example:
+        </p>
+<pre class="programlisting"><span class="identifier">end_tag</span> <span class="special">=</span>
+        <span class="string">"</"</span>
+    <span class="special">></span>   <span class="identifier">lit</span><span class="special">(</span><span class="identifier">_r1</span><span class="special">)</span>
+    <span class="special">></span>   <span class="char">'>'</span>
+<span class="special">;</span>
+</pre>
+<p>
+          What is it? It's the <span class="emphasis"><em>expectation</em></span> operator. You will
+          have some "deterministic points" in the grammar. Those are the
+          places where backtracking <span class="bold"><strong>cannot</strong></span> occur.
+          For our example above, when you get a <code class="computeroutput"><span class="string">"</"</span></code>,
+          you definitely must see a valid end-tag label next. It should be the one
+          you got from the start-tag. After that, you definitely must have a <code class="computeroutput"><span class="char">'>'</span></code> next. Otherwise, there is no point in
+          proceeding forward and trying other branches, regardless where they are.
+          The input is definitely erroneous. When this happens, an expectation_failure
+          exception is thrown. Somewhere outward, the error handler will catch the
+          exception.
+        </p>
+<p>
+          Try building the parser: ../../example/qi/mini_xml2.cpp.
+          You can find some examples in: ../../example/qi/mini_xml_samples
+          for testing purposes. "4.toyxml" has an error in it:
+        </p>
+<pre class="programlisting"><span class="special"><</span><span class="identifier">foo</span><span class="special">><</span><span class="identifier">bar</span><span class="special">></</span><span class="identifier">foo</span><span class="special">></</span><span class="identifier">bar</span><span class="special">></span>
+</pre>
+<p>
+          Running the example with this gives you:
+        </p>
+<pre class="programlisting"><span class="identifier">Error</span><span class="special">!</span> <span class="identifier">Expecting</span> <span class="string">"bar"</span> <span class="identifier">here</span><span class="special">:</span> <span class="string">"foo></bar>"</span>
+<span class="identifier">Error</span><span class="special">!</span> <span class="identifier">Expecting</span> <span class="identifier">end_tag</span> <span class="identifier">here</span><span class="special">:</span> <span class="string">"<bar></foo></bar>"</span>
+<span class="special">-------------------------</span>
+<span class="identifier">Parsing</span> <span class="identifier">failed</span>
+<span class="special">-------------------------</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mini_xml___asts_.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Number List - stuffing numbers into a std::vector</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="sum___adding_numbers.html" title="Sum - adding numbers">
+<link rel="next" href="number_list_redux___list_syntax.html" title="Number List Redux - list syntax">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sum___adding_numbers.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list_redux___list_syntax.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Number List - stuffing numbers into a std::vector">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.number_list___stuffing_numbers_into_a_std__vector"></a><a class="link" href="number_list___stuffing_numbers_into_a_std__vector.html" title="Number List - stuffing numbers into a std::vector">Number
+        List - stuffing numbers into a std::vector</a>
+</h4></div></div></div>
+<p>
+          This sample demontrates a parser for a comma separated list of numbers.
+          The numbers are inserted in a vector using phoenix.
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">parse_numbers</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <span class="identifier">v</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span>
+
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+            <span class="identifier">double_</span><span class="special">[</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">v</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)]</span>
+                <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">v</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)])</span>
+        <span class="special">)</span>
+        <span class="special">,</span>
+        <span class="comment">//  End grammar
+</span>
+        <span class="identifier">space</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/num_list2.cpp
+        </p>
+<p>
+          This, again, is the same parser as before. This time, instead of summing
+          up the numbers, we stuff them in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>.
+          <code class="computeroutput"><span class="identifier">push_back</span></code> is supplied by
+          Phoenix. The expression:
+        </p>
+<pre class="programlisting"><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">v</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)</span>
+</pre>
+<p>
+          appends the parsed number. Like before, <code class="computeroutput"><span class="identifier">_1</span></code>
+          is a Phoenix placeholder
+          for the parsed result attribute. Also, like before, <code class="computeroutput"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">v</span><span class="special">)</span></code>
+          tells Phoenix that
+          <code class="computeroutput"><span class="identifier">v</span></code>, the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>,
+          is a mutable reference.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="sum___adding_numbers.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list_redux___list_syntax.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Number List Attribute - one more, with style</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="number_list_redux___list_syntax.html" title="Number List Redux - list syntax">
+<link rel="next" href="roman_numerals.html" title="Roman Numerals">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list_redux___list_syntax.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="roman_numerals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Number List Attribute - one more, with style">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.number_list_attribute___one_more__with_style"></a><a class="link" href="number_list_attribute___one_more__with_style.html" title="Number List Attribute - one more, with style">Number
+        List Attribute - one more, with style</a>
+</h4></div></div></div>
+<p>
+          You've seen that the <code class="computeroutput"><span class="identifier">double_</span></code>
+          parser has a <code class="computeroutput"><span class="keyword">double</span></code> attribute.
+          All parsers have an attribute, even complex parsers, those that are composed
+          from primitives using operators, like the list parser, also have an attribute.
+          It so happens that the the attribute of a list parser:
+        </p>
+<pre class="programlisting"><span class="identifier">p</span> <span class="special">%</span> <span class="identifier">d</span>
+</pre>
+<p>
+          is a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code> of the attribute of <code class="computeroutput"><span class="identifier">p</span></code>. So, for our parser:
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special">%</span> <span class="char">','</span>
+</pre>
+<p>
+          we'll have an attribute of:
+        </p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span>
+</pre>
+<p>
+          So, what does this give us? Well, we can simply pass in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span></code>
+          to our number list parser and it will happily churn out our result in our
+          vector. For that to happen, we'll use a variation of the <code class="computeroutput"><span class="identifier">phrase_parse</span></code> with an additional argument:
+          the parser's attribute:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            An iterator pointing to the start of the input
+          </li>
+<li class="listitem">
+            An iterator pointing to one past the end of the input
+          </li>
+<li class="listitem">
+            The parser object
+          </li>
+<li class="listitem">
+            The parser's attribute
+          </li>
+<li class="listitem">
+            Another parser called the skip parser
+          </li>
+</ol></div>
+<p>
+          So, our parser now is further simplified to:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">parse_numbers</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <span class="identifier">v</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span>
+
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+            <span class="identifier">double_</span> <span class="special">%</span> <span class="char">','</span>
+        <span class="special">)</span>
+        <span class="special">,</span>
+        <span class="comment">//  End grammar
+</span>
+        <span class="identifier">space</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/num_list4.cpp
+        </p>
+<p>
+          <span class="bold"><strong>Hey, no more actions!!!</strong></span> Now we're entering
+          the realm of attribute grammars. Cool eh?
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list_redux___list_syntax.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="roman_numerals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,102 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Number List Redux - list syntax</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="number_list___stuffing_numbers_into_a_std__vector.html" title="Number List - stuffing numbers into a std::vector">
+<link rel="next" href="number_list_attribute___one_more__with_style.html" title="Number List Attribute - one more, with style">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list___stuffing_numbers_into_a_std__vector.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list_attribute___one_more__with_style.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Number List Redux - list syntax">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.number_list_redux___list_syntax"></a><a class="link" href="number_list_redux___list_syntax.html" title="Number List Redux - list syntax">Number
+        List Redux - list syntax</a>
+</h4></div></div></div>
+<p>
+          So far, we've been using the syntax:
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">)</span>
+</pre>
+<p>
+          to parse a comma-delimited list of numbers. Such lists are common in parsing
+          and Spirit provides a simpler shortcut for them. The expression above can
+          be simplified to:
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special">%</span> <span class="char">','</span>
+</pre>
+<p>
+          read as: a list of doubles separated by <code class="computeroutput"><span class="char">','</span></code>.
+        </p>
+<p>
+          This sample, again a variation of our previous example, demonstrates just
+          that:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">parse_numbers</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">>&</span> <span class="identifier">v</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span>
+
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+            <span class="identifier">double_</span><span class="special">[</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">v</span><span class="special">),</span> <span class="identifier">_1</span><span class="special">)]</span> <span class="special">%</span> <span class="char">','</span>
+        <span class="special">)</span>
+        <span class="special">,</span>
+        <span class="comment">//  End grammar
+</span>
+        <span class="identifier">space</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/num_list3.cpp
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list___stuffing_numbers_into_a_std__vector.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list_attribute___one_more__with_style.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Quick Start</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="../tutorials.html" title="Tutorials">
+<link rel="next" href="warming_up.html" title="Warming up">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="warming_up.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Quick Start">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
+</h4></div></div></div>
+<a name="spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_"></a><h6>
+<a name="id596970"></a>
+          <a class="link" href="quick_start.html#spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_">Why
+          would you want to use Spirit.Qi?</a>
+        </h6>
+<p>
+          Spirit.Qi is designed to be a practical parsing tool. The ability to generate
+          a fully-working parser from a formal EBNF specification inlined in C++
+          significantly reduces development time. Programmers typically approach
+          parsing using ad hoc hacks with primitive tools such as scanf. Even regular-expression
+          libraries (such as boost regex) or scanners (such as Boost tokenizer) do
+          not scale well when we need to write more elaborate parsers. Attempting
+          to write even a moderately-complex parser using these tools leads to code
+          that is hard to understand and maintain.
+        </p>
+<p>
+          One prime objective is to make the tool easy to use. When one thinks of
+          a parser generator, the usual reaction is "it must be big and complex
+          with a steep learning curve." Not so. Spirit is designed to be fully
+          scalable. The library is structured in layers. This permits learning on
+          an as-needed basis, after only learning the minimal core and basic concepts.
+        </p>
+<p>
+          For development simplicity and ease in deployment, the entire library consists
+          of only header files, with no libraries to link against or build. Just
+          put the spirit distribution in your include path, compile and run. Code
+          size? -very tight -essentially comparable to hand written recursive descent
+          code.
+        </p>
+<p>
+          Our tutorials will walk you through the simplest Spirit examples, incrementally
+          building on top of the earlier examples as we expose more and more features
+          and techniques. We will try to be as gentle as possible with the learning
+          curve. We will present the tutorials in a cookbook style approach. This
+          style of presentation is based on our BoostCon '07 and BoostCon '08 slides.
+        </p>
+<p>
+          Have fun!
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../tutorials.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="warming_up.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,418 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Roman Numerals</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="number_list_attribute___one_more__with_style.html" title="Number List Attribute - one more, with style">
+<link rel="next" href="employee___parsing_into_structs.html" title="Employee - Parsing into structs">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list_attribute___one_more__with_style.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="employee___parsing_into_structs.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Roman Numerals">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.roman_numerals"></a><a class="link" href="roman_numerals.html" title="Roman Numerals">Roman Numerals</a>
+</h4></div></div></div>
+<p>
+          This example demonstrates:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            symbol table
+          </li>
+<li class="listitem">
+            rule
+          </li>
+<li class="listitem">
+            grammar
+          </li>
+</ul></div>
+<a name="spirit.qi.tutorials.roman_numerals.symbol_table"></a><h6>
+<a name="id604954"></a>
+          <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.symbol_table">Symbol
+          Table</a>
+        </h6>
+<p>
+          The symbol table holds a dictionary of symbols where each symbol is a sequence
+          of characters (a <code class="computeroutput"><span class="keyword">char</span></code>, <code class="computeroutput"><span class="keyword">wchar_t</span></code>, <code class="computeroutput"><span class="keyword">int</span></code>,
+          enumeration etc.) . The template class, parameterized by the character
+          type, can work efficiently with 8, 16, 32 and even 64 bit characters. Mutable
+          data of type T is associated with each symbol.
+        </p>
+<p>
+          Traditionally, symbol table management is maintained seperately outside
+          the BNF grammar through semantic actions. Contrary to standard practice,
+          the Spirit symbol table class symbols is-a parser. An object of which may
+          be used anywhere in the EBNF grammar specification. It is an example of
+          a dynamic parser. A dynamic parser is characterized by its ability to modify
+          its behavior at run time. Initially, an empty symbols object matches nothing.
+          At any time, symbols may be added or removed, thus, dynamically altering
+          its behavior.
+        </p>
+<p>
+          Each entry in a symbol table has an associated mutable data slot. In this
+          regard, one can view the symbol table as an associative container (or map)
+          of key-value pairs where the keys are strings.
+        </p>
+<p>
+          The symbols class expects two template parameters. The first parameter
+          specifies the character type of the symbols. The second specifies the data
+          type associated with each symbol: its attribute.
+        </p>
+<p>
+          Here's a parser for roman hundreds (100..900) using the symbol table. Keep
+          in mind that the data associated with each slot is the parser's attribute
+          (which is passed to attached semantic actions).
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">hundreds_</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">hundreds_</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"C"</span>    <span class="special">,</span> <span class="number">100</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"CC"</span>   <span class="special">,</span> <span class="number">200</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"CCC"</span>  <span class="special">,</span> <span class="number">300</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"CD"</span>   <span class="special">,</span> <span class="number">400</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"D"</span>    <span class="special">,</span> <span class="number">500</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"DC"</span>   <span class="special">,</span> <span class="number">600</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"DCC"</span>  <span class="special">,</span> <span class="number">700</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"DCCC"</span> <span class="special">,</span> <span class="number">800</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"CM"</span>   <span class="special">,</span> <span class="number">900</span><span class="special">)</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+<span class="special">}</span> <span class="identifier">hundreds</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Here's a parser for roman tens (10..90):
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">tens_</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">tens_</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"X"</span>    <span class="special">,</span> <span class="number">10</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"XX"</span>   <span class="special">,</span> <span class="number">20</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"XXX"</span>  <span class="special">,</span> <span class="number">30</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"XL"</span>   <span class="special">,</span> <span class="number">40</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"L"</span>    <span class="special">,</span> <span class="number">50</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"LX"</span>   <span class="special">,</span> <span class="number">60</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"LXX"</span>  <span class="special">,</span> <span class="number">70</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"LXXX"</span> <span class="special">,</span> <span class="number">80</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"XC"</span>   <span class="special">,</span> <span class="number">90</span><span class="special">)</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+<span class="special">}</span> <span class="identifier">tens</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          and, finally, for ones (1..9):
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">ones_</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special"><</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">></span>
+<span class="special">{</span>
+    <span class="identifier">ones_</span><span class="special">()</span>
+    <span class="special">{</span>
+        <span class="identifier">add</span>
+            <span class="special">(</span><span class="string">"I"</span>    <span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"II"</span>   <span class="special">,</span> <span class="number">2</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"III"</span>  <span class="special">,</span> <span class="number">3</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"IV"</span>   <span class="special">,</span> <span class="number">4</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"V"</span>    <span class="special">,</span> <span class="number">5</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"VI"</span>   <span class="special">,</span> <span class="number">6</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"VII"</span>  <span class="special">,</span> <span class="number">7</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"VIII"</span> <span class="special">,</span> <span class="number">8</span><span class="special">)</span>
+            <span class="special">(</span><span class="string">"IX"</span>   <span class="special">,</span> <span class="number">9</span><span class="special">)</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+<span class="special">}</span> <span class="identifier">ones</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Now we can use <code class="computeroutput"><span class="identifier">hundreds</span></code>,
+          <code class="computeroutput"><span class="identifier">tens</span></code> and <code class="computeroutput"><span class="identifier">ones</span></code> anywhere in our parser expressions.
+          They are all parsers.
+        </p>
+<a name="spirit.qi.tutorials.roman_numerals.rules"></a><h6>
+<a name="id605934"></a>
+          <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.rules">Rules</a>
+        </h6>
+<p>
+          Up until now, we've been inlining our parser expressions, passing them
+          directly to the <code class="computeroutput"><span class="identifier">phrase_parse</span></code>
+          function. The expression evaluates into a temporary, unnamed parser which
+          is passed into the <code class="computeroutput"><span class="identifier">phrase_parse</span></code>
+          function, used, and then destroyed. This is fine for small parsers. When
+          the expressions get complicated, you'd want to break the expressions into
+          smaller easier to understand pieces, name them, and refer to them from
+          other parser expressions by name.
+        </p>
+<p>
+          A parser expression can be assigned to, what is called, a "rule".
+          There are various ways to declare rules. The simplest form is:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+          At the very least, the rule needs to know the iterator type it will be
+          working on. This rule cannot be used with <code class="computeroutput"><span class="identifier">phrase_parse</span></code>.
+          It can only be used with the <code class="computeroutput"><span class="identifier">parse</span></code>
+          function -- a version that does not do white space skipping (does not have
+          the skipper argument). If you want to have it skip white spaces, you need
+          to pass in the type skip parser, as in the next form:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">Skipper</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+          Example:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span><span class="special">,</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+          This type of rule can be used for both <code class="computeroutput"><span class="identifier">phrase_parse</span></code>
+          and <code class="computeroutput"><span class="identifier">parse</span></code>.
+        </p>
+<p>
+          For our next example, there's one more rule form you should know about:
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">Signature</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+          or
+        </p>
+<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">Signature</span><span class="special">,</span> <span class="identifier">Skipper</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<div class="tip" title="Tip"><table border="0" summary="Tip">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
+<th align="left">Tip</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            All rule template arguments after Iterator can be supplied in any order.
+          </p></td></tr>
+</table></div>
+<p>
+          The Signature specifies the attributes of the rule. You've seen that our
+          parsers can have an attribute. Recall that the <code class="computeroutput"><span class="identifier">double_</span></code>
+          parser has an attribute of <code class="computeroutput"><span class="keyword">double</span></code>.
+          To be precise, these are <span class="emphasis"><em>synthesized</em></span> attributes. The
+          parser "synthesizes" the attribute value. Think of them as function
+          return values.
+        </p>
+<p>
+          There's another type of attribute called "inherited" attribute.
+          We won't need them for now, but it's good that you be aware of such attributes.
+          You can think of them as function arguments. And, rightly so, the rule
+          signature is a function signature of the form:
+        </p>
+<pre class="programlisting"><span class="identifier">result</span><span class="special">(</span><span class="identifier">argN</span><span class="special">,</span> <span class="identifier">argN</span><span class="special">,...,</span> <span class="identifier">argN</span><span class="special">)</span>
+</pre>
+<p>
+          After having declared a rule, you can now assign any parser expression
+          to it. Example:
+        </p>
+<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">);</span>
+</pre>
+<a name="spirit.qi.tutorials.roman_numerals.grammars"></a><h6>
+<a name="id606327"></a>
+          <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.grammars">Grammars</a>
+        </h6>
+<p>
+          A grammar encapsulates one or more rules. It has the same template parameters
+          as the rule. You declare a grammar by:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            deriving a struct (or class) from the <code class="computeroutput"><span class="identifier">grammar</span></code>
+            class template
+          </li>
+<li class="listitem">
+            declare one or more rules as member variables
+          </li>
+<li class="listitem">
+            initialize the base grammar class by giving it the start rule (its the
+            first rule that gets called when the grammar starts parsing)
+          </li>
+<li class="listitem">
+            initialize your rules in your constructor
+          </li>
+</ol></div>
+<p>
+          The roman numeral grammar is a very nice and simple example of a grammar:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">roman</span> <span class="special">:</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span>
+<span class="special">{</span>
+    <span class="identifier">roman</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">roman</span><span class="special">::</span><span class="identifier">base_type</span><span class="special">(</span><span class="identifier">start</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">eps</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_val</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+        <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+
+        <span class="identifier">start</span> <span class="special">=</span> <span class="identifier">eps</span>             <span class="special">[</span><span class="identifier">_val</span> <span class="special">=</span> <span class="number">0</span><span class="special">]</span> <span class="special">>></span>
+            <span class="special">(</span>
+                <span class="special">+</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'M'</span><span class="special">)</span>       <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="number">1000</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">hundreds</span>    <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">tens</span>        <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span>
+                <span class="special">||</span>  <span class="identifier">ones</span>        <span class="special">[</span><span class="identifier">_val</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">]</span>
+            <span class="special">)</span>
+        <span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">unsigned</span><span class="special">()></span> <span class="identifier">start</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Things to take notice of:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            The grammar and start rule signature is <code class="computeroutput"><span class="keyword">unsigned</span><span class="special">()</span></code>. It has a synthesized attribute (return
+            value) of type <code class="computeroutput"><span class="keyword">unsigned</span></code>
+            with no inherited attributes (arguments).
+          </li>
+<li class="listitem">
+            We did not specify a skip-parser. We don't want to skip in between the
+            numerals.
+          </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">roman</span><span class="special">::</span><span class="identifier">base_type</span></code> is a typedef for <code class="computeroutput"><span class="identifier">grammar</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span>
+            <span class="keyword">unsigned</span><span class="special">()></span></code>.
+            If <code class="computeroutput"><span class="identifier">roman</span></code> was not a template,
+            you can simply write: base_type(start)
+          </li>
+<li class="listitem">
+            But it's best to make your grammar templates, so that they can be reused
+            for different iterator types.
+          </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">_val</span></code> is another Phoenix placeholder representing
+            the rule's synthesized attribute.
+          </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">eps</span></code> is a special spirit
+            parser that consumes no input but is always successful. We use it to
+            initialize <code class="computeroutput"><span class="identifier">_val</span></code>, the
+            rule's synthesized attribute, to zero before anything else. The actual
+            parser starts at <code class="computeroutput"><span class="special">+</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'M'</span><span class="special">)</span></code>,
+            parsing roman thousands. Using <code class="computeroutput"><span class="identifier">eps</span></code>
+            this way is good for doing pre and post initializations.
+          </li>
+<li class="listitem">
+            The expression <code class="computeroutput"><span class="identifier">a</span> <span class="special">||</span>
+            <span class="identifier">b</span></code> reads: match a or b and in
+            sequence. That is, if both <code class="computeroutput"><span class="identifier">a</span></code>
+            and <code class="computeroutput"><span class="identifier">b</span></code> match, it must
+            be in sequence; this is equivalent to <code class="computeroutput"><span class="identifier">a</span>
+            <span class="special">>></span> <span class="special">-</span><span class="identifier">b</span> <span class="special">|</span> <span class="identifier">b</span></code>, but more efficient.
+          </li>
+</ul></div>
+<a name="spirit.qi.tutorials.roman_numerals.let_s_parse_"></a><h6>
+<a name="id607054"></a>
+          <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.let_s_parse_">Let's Parse!</a>
+        </h6>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">iter</span><span class="special">,</span> <span class="identifier">end</span><span class="special">,</span> <span class="identifier">roman_parser</span><span class="special">,</span> <span class="identifier">result</span><span class="special">);</span>
+
+<span class="keyword">if</span> <span class="special">(</span><span class="identifier">r</span> <span class="special">&&</span> <span class="identifier">iter</span> <span class="special">==</span> <span class="identifier">end</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"-------------------------\n"</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Parsing succeeded\n"</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"result = "</span> <span class="special"><<</span> <span class="identifier">result</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"-------------------------\n"</span><span class="special">;</span>
+<span class="special">}</span>
+<span class="keyword">else</span>
+<span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">rest</span><span class="special">(</span><span class="identifier">iter</span><span class="special">,</span> <span class="identifier">end</span><span class="special">);</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"-------------------------\n"</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Parsing failed\n"</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"stopped at: \": "</span> <span class="special"><<</span> <span class="identifier">rest</span> <span class="special"><<</span> <span class="string">"\"\n"</span><span class="special">;</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"-------------------------\n"</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          <code class="computeroutput"><span class="identifier">roman_parser</span></code> is an object
+          of type <code class="computeroutput"><span class="identifier">roman</span></code> -our roman
+          numeral parser. This time around, we are using the no-skipping version
+          of the parse functions. We do not want to skip any spaces! We are also
+          passing in an attribute, <code class="computeroutput"><span class="keyword">unsigned</span>
+          <span class="identifier">result</span></code>, which will receive the
+          parsed value.
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/roman.cpp
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="number_list_attribute___one_more__with_style.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="employee___parsing_into_structs.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,262 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Semantic Actions</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="warming_up.html" title="Warming up">
+<link rel="next" href="complex___our_first_complex_parser.html" title="Complex - Our first complex parser">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="warming_up.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="complex___our_first_complex_parser.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Semantic Actions">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.semantic_actions"></a><a class="link" href="semantic_actions.html" title="Semantic Actions">Semantic Actions</a>
+</h4></div></div></div>
+<p>
+          Our parser above is really nothing but a recognizer. It answers the question
+          "did the input match our grammar?", but it does not do anything
+          other than that. It does not extract any information from what was parsed.
+          For example, whenever we parse a real number, we wish to store the parsed
+          number after a successful match.
+        </p>
+<p>
+          Enter Semantic actions. Semantic actions may be attached to any point in
+          the grammar specification. These actions are C++ functions or function
+          objects that are called whenever a part of the parser successfully recognizes
+          a portion of the input. Say you have a parser <code class="computeroutput"><span class="identifier">P</span></code>,
+          and a C++ function <code class="computeroutput"><span class="identifier">F</span></code>, you
+          can make the parser call <code class="computeroutput"><span class="identifier">F</span></code>
+          whenever it matches an input by attaching <code class="computeroutput"><span class="identifier">F</span></code>:
+        </p>
+<pre class="programlisting"><span class="identifier">P</span><span class="special">[</span><span class="identifier">F</span><span class="special">]</span>
+</pre>
+<p>
+          The expression above links <code class="computeroutput"><span class="identifier">F</span></code>
+          to the parser, <code class="computeroutput"><span class="identifier">P</span></code>.
+        </p>
+<p>
+          The function/function object signature depends on the type of the parser
+          to which it is attached. The parser <code class="computeroutput"><span class="identifier">double_</span></code>
+          passes the parsed number. Thus, if we were to attach a function <code class="computeroutput"><span class="identifier">F</span></code> to <code class="computeroutput"><span class="identifier">double_</span></code>,
+          we need <code class="computeroutput"><span class="identifier">F</span></code> to be declared
+          as:
+        </p>
+<pre class="programlisting"><span class="keyword">void</span> <span class="identifier">F</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+          There are actually 2 more arguments being passed (the parser context and
+          a reference to a boolean 'hit' parameter). We don't need these, for now,
+          but we'll see more on these other arguments later. Spirit.Qi allows us
+          to bind a single argument function, like above. The other arguments are
+          simply ignored.
+        </p>
+<p>
+          Presented are various ways to attach semantic actions:
+        </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Using plain function pointer
+          </li>
+<li class="listitem">
+            Using simple function object
+          </li>
+<li class="listitem">
+            Using Boost.Bind with
+            a plain function
+          </li>
+<li class="listitem">
+            Using Boost.Bind with
+            a member function
+          </li>
+<li class="listitem">
+            Using Boost.Lambda
+</li>
+</ul></div>
+<p>
+          Given:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">client</span>
+<span class="special">{</span>
+    <span class="keyword">namespace</span> <span class="identifier">qi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">;</span>
+
+    <span class="comment">// A plain function
+</span>    <span class="keyword">void</span> <span class="identifier">print</span><span class="special">(</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">i</span><span class="special">)</span>
+    <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="comment">// A member function
+</span>    <span class="keyword">struct</span> <span class="identifier">writer</span>
+    <span class="special">{</span>
+        <span class="keyword">void</span> <span class="identifier">print</span><span class="special">(</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">i</span><span class="special">)</span> <span class="keyword">const</span>
+        <span class="special">{</span>
+            <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+        <span class="special">}</span>
+    <span class="special">};</span>
+
+    <span class="comment">// A function object
+</span>    <span class="keyword">struct</span> <span class="identifier">print_action</span>
+    <span class="special">{</span>
+        <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">int</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">i</span><span class="special">,</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span>
+        <span class="special">{</span>
+            <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">i</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+        <span class="special">}</span>
+    <span class="special">};</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Take note that with function objects, we need to have an <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>
+          with 3 arguments. Since we don't care about the other two, we can use
+          <code class="computeroutput"><span class="identifier">unused_type</span></code> for these.
+          We'll see more of <code class="computeroutput"><span class="identifier">unused_type</span></code>
+          elsewhere. Get used to it. <code class="computeroutput"><span class="identifier">unused_type</span></code>
+          is a Spirit supplied support class.
+        </p>
+<p>
+          All examples parse inputs of the form:
+        </p>
+<pre class="programlisting"><span class="string">"{integer}"</span>
+</pre>
+<p>
+          An integer inside the curly braces.
+        </p>
+<p>
+          The first example shows how to attach a plain function:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">'{'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[&</span><span class="identifier">print</span><span class="special">]</span> <span class="special">>></span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          What's new? Well <code class="computeroutput"><span class="identifier">int_</span></code> is
+          the sibbling of <code class="computeroutput"><span class="identifier">double_</span></code>.
+          I'm sure you can guess what this parser does.
+        </p>
+<p>
+          The next example shows how to attach a simple function object:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">'{'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">print_action</span><span class="special">()]</span> <span class="special">>></span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          We can use Boost.Bind
+          to 'bind' member functions:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">writer</span> <span class="identifier">w</span><span class="special">;</span>
+<span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">'{'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(&</span><span class="identifier">writer</span><span class="special">::</span><span class="identifier">print</span><span class="special">,</span> <span class="special">&</span><span class="identifier">w</span><span class="special">,</span> <span class="identifier">_1</span><span class="special">)]</span> <span class="special">>></span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Likewise, we can also use Boost.Bind
+          to 'bind' plain functions:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">'{'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(&</span><span class="identifier">print</span><span class="special">,</span> <span class="identifier">_1</span><span class="special">)]</span> <span class="special">>></span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Yep, we can also use Boost.Lambda:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="char">'{'</span> <span class="special">>></span> <span class="identifier">int_</span><span class="special">[</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">_1</span> <span class="special"><<</span> <span class="char">'\n'</span><span class="special">]</span> <span class="special">>></span> <span class="char">'}'</span><span class="special">);</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          There are more ways to bind semantic action functions, but the examples
+          above are the most common. Attaching semantic actions is the first hurdle
+          one has to tackle when getting started with parsing with Spirit. Familiarize
+          yourself with this task and get intimate with the tools behind it such
+          as Boost.Bind and Boost.Lambda.
+        </p>
+<p>
+          The examples above can be found here: ../../example/qi/actions.cpp
+        </p>
+<a name="spirit.qi.tutorials.semantic_actions.phoenix"></a><h6>
+<a name="id600408"></a>
+          <a class="link" href="semantic_actions.html#spirit.qi.tutorials.semantic_actions.phoenix">Phoenix</a>
+        </h6>
+<p>
+          Phoenix, a companion
+          library bundled with Spirit, is specifically suited for binding semantic
+          actions. It is like Boost.Lambda
+          in steroids, with special custom features that make it easy to integrate
+          semantic actions with Spirit. If your requirements go beyond simple to
+          moderate parsing, I suggest you use this library. Examples presented henceforth
+          shall be using the library exclusively
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="warming_up.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="complex___our_first_complex_parser.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,250 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Sum - adding numbers</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="complex___our_first_complex_parser.html" title="Complex - Our first complex parser">
+<link rel="next" href="number_list___stuffing_numbers_into_a_std__vector.html" title="Number List - stuffing numbers into a std::vector">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complex___our_first_complex_parser.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list___stuffing_numbers_into_a_std__vector.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Sum - adding numbers">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.sum___adding_numbers"></a><a class="link" href="sum___adding_numbers.html" title="Sum - adding numbers">Sum - adding
+        numbers</a>
+</h4></div></div></div>
+<p>
+          Here's a parser that sums a comma-separated list of numbers.
+        </p>
+<p>
+          Ok we've glossed over some details in our previous examples. First, our
+          includes:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">string</span><span class="special">></span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          Then some using directives:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">qi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">ascii</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">;</span>
+<span class="keyword">namespace</span> <span class="identifier">phoenix</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
+
+<span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">ref</span><span class="special">;</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Namespace
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  boost::phoenix
+                </p>
+                </td>
+<td>
+                <p>
+                  All of phoenix
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  boost::spirit
+                </p>
+                </td>
+<td>
+                <p>
+                  All of spirit
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  boost::spirit::qi
+                </p>
+                </td>
+<td>
+                <p>
+                  All of spirit.qi
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  boost::spirit::ascii
+                </p>
+                </td>
+<td>
+                <p>
+                  ASCII version of <code class="computeroutput"><span class="identifier">char_</span></code>
+                  and all char related parsers. Other encodings are also provided
+                  (e.g. also an ISO8859.1)
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  boost::spirit::arg_names
+                </p>
+                </td>
+<td>
+                <p>
+                  Special phoenix placeholders for spirit
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            If you feel uneasy with using whole namespaces, feel free to qualify
+            your code, use namespace aliases, etc. For the purpose of this tutorial,
+            we will be presenting unqualified names for both Spirit and Phoenix.
+            No worries, we will always present the full working code, so you won't
+            get lost. In fact, all examples in this tutorial have a corresponding
+            cpp file that QuickBook (the documentation tool we are using) imports
+            in here as code snippets.
+          </p></td></tr>
+</table></div>
+<p>
+          Now the actual parser:
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">adder</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&</span> <span class="identifier">n</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span>
+
+        <span class="comment">//  Begin grammar
+</span>        <span class="special">(</span>
+            <span class="identifier">double_</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">[</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">_1</span><span class="special">])</span>
+        <span class="special">)</span>
+        <span class="special">,</span>
+        <span class="comment">//  End grammar
+</span>
+        <span class="identifier">space</span><span class="special">);</span>
+
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The full cpp file for this example can be found here: ../../example/qi/sum.cpp
+        </p>
+<p>
+          This is almost like our original numbers list example. We're incrementally
+          building on top of our examples. This time though, like in the complex
+          number example, we'll be adding the smarts. There's an accumulator (`double&
+          n) that adds the numbers parsed. On a successful parse, this number is
+          the sum of all the parsed numbers.
+        </p>
+<p>
+          The first <code class="computeroutput"><span class="identifier">double_</span></code> parser
+          attaches this action:
+        </p>
+<pre class="programlisting"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span>
+</pre>
+<p>
+          This assigns the parsed result (actually, the attribute of <code class="computeroutput"><span class="identifier">double_</span></code>) to <code class="computeroutput"><span class="identifier">n</span></code>.
+          <code class="computeroutput"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span></code> tells
+          Phoenix that <code class="computeroutput"><span class="identifier">n</span></code> is a mutable reference. <code class="computeroutput"><span class="identifier">_1</span></code> is a Phoenix
+          placeholder for the parsed result attribute.
+        </p>
+<p>
+          The second <code class="computeroutput"><span class="identifier">double_</span></code> parser
+          attaches this action:
+        </p>
+<pre class="programlisting"><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">+=</span> <span class="identifier">_1</span>
+</pre>
+<p>
+          So, subsequent numbers add into <code class="computeroutput"><span class="identifier">n</span></code>.
+        </p>
+<p>
+          That wasn't too bad, was it :-) ?
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="complex___our_first_complex_parser.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="number_list___stuffing_numbers_into_a_std__vector.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,295 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Warming up</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../tutorials.html" title="Tutorials">
+<link rel="prev" href="quick_start.html" title="Quick Start">
+<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Warming up">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.tutorials.warming_up"></a><a class="link" href="warming_up.html" title="Warming up">Warming up</a>
+</h4></div></div></div>
+<p>
+          We'll start by showing examples of parser expressions to give you a feel
+          on how to build parsers from the simplest parser, building up as we go.
+        </p>
+<a name="spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number"></a><h6>
+<a name="id597016"></a>
+          <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number">Trivial
+          Example #1 Parsing a number</a>
+        </h6>
+<p>
+          Create a parser that will parse a floating-point number.
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span>
+</pre>
+<p>
+          (You've got to admit, that's trivial!) The above code actually generates
+          a Spirit floating point parser (a built-in parser). Spirit has many pre-defined
+          parsers and consistent naming conventions help you keep from going insane!
+        </p>
+<a name="spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers"></a><h6>
+<a name="id597045"></a>
+          <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers">Trivial
+          Example #2 Parsing two numbers</a>
+        </h6>
+<p>
+          Create a parser that will accept a line consisting of two floating-point
+          numbers.
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special">>></span> <span class="identifier">double_</span>
+</pre>
+<p>
+          Here you see the familiar floating-point numeric parser <code class="computeroutput"><span class="identifier">double_</span></code>
+          used twice, once for each number. What's that <code class="computeroutput"><span class="special">>></span></code>
+          operator doing in there? Well, they had to be separated by something, and
+          this was chosen as the "followed by" sequence operator. The above
+          program creates a parser from two simpler parsers, glueing them together
+          with the sequence operator. The result is a parser that is a composition
+          of smaller parsers. Whitespace between numbers can implicitly be consumed
+          depending on how the parser is invoked (see below).
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+            When we combine parsers, we end up with a "bigger" parser,
+            but it's still a parser. Parsers can get bigger and bigger, nesting more
+            and more, but whenever you glue two parsers together, you end up with
+            one bigger parser. This is an important concept.
+          </p></td></tr>
+</table></div>
+<a name="spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers"></a><h6>
+<a name="id597106"></a>
+          <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers">Trivial
+          Example #3 Parsing one or more numbers</a>
+        </h6>
+<p>
+          Create a parser that will accept zero or more floating-point numbers.
+        </p>
+<pre class="programlisting"><span class="special">*</span><span class="identifier">double_</span>
+</pre>
+<p>
+          This is like a regular-expression Kleene Star, though the syntax might
+          look a bit odd for a C++ programmer not used to seeing the <code class="computeroutput"><span class="special">*</span></code> operator overloaded like this. Actually,
+          if you know regular expressions it may look odd too since the star is before
+          the expression it modifies. C'est la vie. Blame it on the fact that we
+          must work with the syntax rules of C++.
+        </p>
+<p>
+          Any expression that evaluates to a parser may be used with the Kleene Star.
+          Keep in mind, though, that due to C++ operator precedence rules you may
+          need to put the expression in parentheses for complex expressions. The
+          Kleene Star is also known as a Kleene Closure, but we call it the Star
+          in most places.
+        </p>
+<a name="spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers"></a><h6>
+<a name="id597150"></a>
+          <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers">Trivial
+          Example #4 Parsing a comma-delimited list of numbers</a>
+        </h6>
+<p>
+          This example will create a parser that accepts a comma-delimited list of
+          numbers.
+        </p>
+<pre class="programlisting"><span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">char_</span><span class="special">(</span><span class="char">','</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">)</span>
+</pre>
+<p>
+          Notice <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="char">','</span><span class="special">)</span></code>. It is
+          a literal character parser that can recognize the comma <code class="computeroutput"><span class="char">','</span></code>.
+          In this case, the Kleene Star is modifying a more complex parser, namely,
+          the one generated by the expression:
+        </p>
+<pre class="programlisting"><span class="special">(</span><span class="identifier">char_</span><span class="special">(</span><span class="char">','</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">)</span>
+</pre>
+<p>
+          Note that this is a case where the parentheses are necessary. The Kleene
+          star encloses the complete expression above.
+        </p>
+<a name="spirit.qi.tutorials.warming_up.let_s_parse_"></a><h6>
+<a name="id597281"></a>
+          <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.let_s_parse_">Let's Parse!</a>
+        </h6>
+<p>
+          We're done with defining the parser. So the next step is now invoking this
+          parser to do its work. There are a couple of ways to do this. For now,
+          we will use the <code class="computeroutput"><span class="identifier">phrase_parse</span></code>
+          function. One overload of this function accepts four arguments:
+        </p>
+<div class="orderedlist"><ol class="orderedlist" type="1">
+<li class="listitem">
+            An iterator pointing to the start of the input
+          </li>
+<li class="listitem">
+            An iterator pointing to one past the end of the input
+          </li>
+<li class="listitem">
+            The parser object
+          </li>
+<li class="listitem">
+            Another parser called the skip parser
+          </li>
+</ol></div>
+<p>
+          In our example, we wish to skip spaces and tabs. Another parser named
+          <code class="computeroutput"><span class="identifier">space</span></code> is included in Spirit's
+          repertoire of predefined parsers. It is a very simple parser that simply
+          recognizes whitespace. We will use <code class="computeroutput"><span class="identifier">space</span></code>
+          as our skip parser. The skip parser is the one responsible for skipping
+          characters in between parser elements such as the <code class="computeroutput"><span class="identifier">double_</span></code>
+          and <code class="computeroutput"><span class="identifier">char_</span></code>.
+        </p>
+<p>
+          Ok, so now let's parse!
+        </p>
+<p>
+          </p>
+<p>
+            
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">bool</span> <span class="identifier">parse_numbers</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="identifier">last</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+
+    <span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">phrase_parse</span><span class="special">(</span>
+        <span class="identifier">first</span><span class="special">,</span>                          <span class="callout_bug"><a class="co" name="spirit0co" href="warming_up.html#spirit0"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a></span>
+        <span class="identifier">last</span><span class="special">,</span>                           <span class="callout_bug"><a class="co" name="spirit1co" href="warming_up.html#spirit1"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a></span>
+        <span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">),</span>   <span class="callout_bug"><a class="co" name="spirit2co" href="warming_up.html#spirit2"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a></span>
+        <span class="identifier">space</span>                           <span class="callout_bug"><a class="co" name="spirit3co" href="warming_up.html#spirit3"><img src="../../../../../../../doc/src/images/callouts/4.png" alt="4" border="0"></a></span>
+    <span class="special">);</span>
+    <span class="keyword">if</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="comment">// fail if we did not get a full match
+</span>        <span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+          </p>
+<p>
+          </p>
+<p>
+            </p>
+<div class="calloutlist"><table border="0" summary="Callout list">
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit0"></a>
 </p></td>
+<td valign="top" align="left"><p> start iterator </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit1"></a>
 </p></td>
+<td valign="top" align="left"><p> end iterator </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit2"></a>
 </p></td>
+<td valign="top" align="left"><p> the parser </p></td>
+</tr>
+<tr>
+<td width="5%" valign="top" align="left"><p><a name="spirit3"></a>
 </p></td>
+<td valign="top" align="left"><p> the skip-parser </p></td>
+</tr>
+</table></div>
+<p>
+          </p>
+<p>
+        </p>
+<p>
+          The parse function returns <code class="computeroutput"><span class="keyword">true</span></code>
+          or <code class="computeroutput"><span class="keyword">false</span></code> depending on the
+          result of the parse. The first iterator is passed by reference. On a successful
+          parse, this iterator is repositioned to the rightmost position consumed
+          by the parser. If this becomes equal to str.end(), then we have a full
+          match. If not, then we have a partial match. A partial match happens when
+          the parser is only able to parse a portion of the input.
+        </p>
+<p>
+          Note that we inlined the parser directly in the call to parse. Upon calling
+          parse, the expression evaluates into a temporary, unnamed parser which
+          is passed into the parse() function, used, and then destroyed.
+        </p>
+<p>
+          Here, we opted to make the parser generic by making it a template, parameterized
+          by the iterator type. By doing so, it can take in data coming from any
+          STL conforming sequence as long as the iterators conform to a forward iterator.
+        </p>
+<p>
+          You can find the full cpp file here: ../../example/qi/num_list1.cpp
+        </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+            <code class="computeroutput"><span class="keyword">char</span></code> and <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+            operands
+          </p>
+<p>
+            The careful reader may notice that the parser expression has <code class="computeroutput"><span class="char">','</span></code> instead of <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="char">','</span><span class="special">)</span></code>
+            as the previous examples did. This is ok due to C++ syntax rules of conversion.
+            There are <code class="computeroutput"><span class="special">>></span></code> operators
+            that are overloaded to accept a <code class="computeroutput"><span class="keyword">char</span></code>
+            or <code class="computeroutput"><span class="keyword">wchar_t</span></code> argument on its
+            left or right (but not both). An operator may be overloaded if at least
+            one of its parameters is a user-defined type. In this case, the <code class="computeroutput"><span class="identifier">double_</span></code> is the 2nd argument to <code class="computeroutput"><span class="keyword">operator</span><span class="special">>></span></code>,
+            and so the proper overload of <code class="computeroutput"><span class="special">>></span></code>
+            is used, converting <code class="computeroutput"><span class="char">','</span></code> into
+            a character literal parser.
+          </p>
+<p>
+            The problem with omiting the <code class="computeroutput"><span class="identifier">char_</span></code>
+            should be obvious: <code class="computeroutput"><span class="char">'a'</span> <span class="special">>></span>
+            <span class="char">'b'</span></code> is not a spirit parser, it is
+            a numeric expression, right-shifting the ASCII (or another encoding)
+            value of <code class="computeroutput"><span class="char">'a'</span></code> by the ASCII value
+            of <code class="computeroutput"><span class="char">'b'</span></code>. However, both <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span> <span class="special">>></span>
+            <span class="char">'b'</span></code> and <code class="computeroutput"><span class="char">'a'</span>
+            <span class="special">>></span> <span class="identifier">char_</span><span class="special">(</span><span class="char">'b'</span><span class="special">)</span></code>
+            are Spirit sequence parsers for the letter <code class="computeroutput"><span class="char">'a'</span></code>
+            followed by <code class="computeroutput"><span class="char">'b'</span></code>. You'll get
+            used to it, sooner or later.
+          </p>
+</td></tr>
+</table></div>
+<p>
+          Finally, take note that we test for a full match (i.e. the parser fully
+          parsed the input) by checking if the first iterator, after parsing, is
+          equal to the end iterator. You may strike out this part if partial matches
+          are to be allowed.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="quick_start.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tutorials.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/references.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/references.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,491 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>References</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="acknowledgments.html" title="Acknowledgments">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgments.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+<div class="section" title="References">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.references"></a><a class="link" href="references.html" title="References">References</a>
+</h2></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+            <p>
+            </p>
+            </th>
+<th>
+            <p>
+              Authors
+            </p>
+            </th>
+<th>
+            <p>
+              Title, Publisher/link, Date Published
+            </p>
+            </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+            <p>
+              1.
+            </p>
+            </td>
+<td>
+            <p>
+              Todd Veldhuizen
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.extreme.indiana.edu/%7Etveldhui/papers/Expression-Templates/exprtmpl.html" target="_top">"Expression
+              Templates"</a>. C++ Report, June 1995.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              2.
+            </p>
+            </td>
+<td>
+            <p>
+              Peter Naur (ed.)
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.masswerk.at/algol60/report.htm" target="_top">"Report
+              on the Algorithmic Language ALGOL 60"</a>. CACM, May 1960.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              3.
+            </p>
+            </td>
+<td>
+            <p>
+              ISO/IEC
+            </p>
+            </td>
+<td>
+            <p>
+              "ISO-EBNF",
+              ISO/IEC 14977: 1996(E).
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              4.
+            </p>
+            </td>
+<td>
+            <p>
+              Richard J.Botting, Ph.D.
+            </p>
+            </td>
+<td>
+            <p>
+              "XBNF"
+              (citing Leu-Weiner, 1973). California State University, San Bernardino,
+              1998.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              5.
+            </p>
+            </td>
+<td>
+            <p>
+              James Coplien.
+            </p>
+            </td>
+<td>
+            <p>
+              "Curiously Recurring Template Pattern". C++ Report, Feb.
+              1995.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              6.
+            </p>
+            </td>
+<td>
+            <p>
+              Thierry Geraud and Alexandre Duret-Lutz
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.coldewey.com/europlop2000/papers/geraud%2Bduret.zip" target="_top">Generic
+              Programming Redesign of Patterns</a> Proceedings of the 5th European
+              Conference on Pattern Languages of Programs(EuroPLoP'2000) Irsee, Germany,
+              July 2000.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              7.
+            </p>
+            </td>
+<td>
+            <p>
+              Geoffrey Furnish
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.adtmag.com/joop/carticle.aspx?ID=627" target="_top">"Disambiguated
+              Glommable Expression Templates Reintroduced"</a> C++ Report,
+              May 2000
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              8.
+            </p>
+            </td>
+<td>
+            <p>
+              Erich Gamma, Richard Helm, Ralph Jhonson, and John Vlissides
+            </p>
+            </td>
+<td>
+            <p>
+              Design Patterns, Elements of Reusable Object-Oriented Software. Addison-Wesley,
+              1995.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              9.
+            </p>
+            </td>
+<td>
+            <p>
+              Alfred V. Aho, Revi Sethi, Feffrey D. Ulman
+            </p>
+            </td>
+<td>
+            <p>
+              Compilers, Principles, Techniques and Tools Addison-Wesley, June 1987.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              10.
+            </p>
+            </td>
+<td>
+            <p>
+              Dick Grune and Ceriel Jacobs
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.cs.vu.nl/%7Edick/PTAPG.html" target="_top">Parsing Techniques:
+              A Practical Guide.</a> Ellis Horwood Ltd.: West Sussex, England,
+              1990. (electronic copy, 1998).
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              11.
+            </p>
+            </td>
+<td>
+            <p>
+              T. J. Parr, H. G. Dietz, and W. E. Cohen
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://citeseer.ist.psu.edu/6885.html" target="_top">PCCTS Reference
+              Manual (Version 1.00)</a>. School of Electrical Engineering, Purdue
+              University, West Lafayette, August 1991.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              12.
+            </p>
+            </td>
+<td>
+            <p>
+              Adrian Johnstone and Elizabeth Scott.
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="ftp://ftp.cs.rhul.ac.uk/pub/rdp" target="_top">RDP, A Recursive Descent
+              Compiler Compiler</a>. Technical Report CSD TR 97 25, Dept. of
+              Computer Science, Egham, Surrey, England, Dec. 20, 1997.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              13.
+            </p>
+            </td>
+<td>
+            <p>
+              Adrian Johnstone
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.cs.rhul.ac.uk/research/languages/projects/lookahead_backtrack.shtml" target="_top">Languages
+              and Architectures, Parser generators with backtrack or extended lookahead
+              capability</a> Department of Computer Science, Royal Holloway,
+              University of London, Egham, Surrey, England
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              14.
+            </p>
+            </td>
+<td>
+            <p>
+              Damian Conway
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.csse.monash.edu.au/%7Edamian/papers/#Embedded_Input_Parsing_for_C" target="_top">Parsing
+              with C++ Classes</a>. ACM SIGPLAN Notices, 29:1, 1994.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              15.
+            </p>
+            </td>
+<td>
+            <p>
+              Joel de Guzman
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://spirit.sourceforge.net/distrib/spirit_1_8_5/libs/spirit/index.html" target="_top">"Spirit
+              Version 1.8"</a>, 1998-2003.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              16.
+            </p>
+            </td>
+<td>
+            <p>
+              S. Doaitse Swierstra and Luc Duponcheel
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://citeseer.ist.psu.edu/448665.html" target="_top">Deterministic,
+              Error-Correcting Combinator Parsers</a> Dept. of Computer Science,
+              Utrecht University P.O.Box 80.089, 3508 TB Utrecht, The Netherland
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              17.
+            </p>
+            </td>
+<td>
+            <p>
+              Bjarne Stroustrup
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.research.att.com/%7Ebs/whitespace98.pdf" target="_top">Generalizing
+              Overloading for C++2000</a> Overload, Issue 25. April 1, 1998.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              18.
+            </p>
+            </td>
+<td>
+            <p>
+              Dr. John Maddock
+            </p>
+            </td>
+<td>
+            <p>
+              Regex++ Documentation
+              http://www.boost.org/libs/regex/index.htm
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              19.
+            </p>
+            </td>
+<td>
+            <p>
+              Anonymous Edited by Graham Hutton
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.cs.nott.ac.uk/~gmh//faq.html" target="_top">Frequently Asked
+              Questions for comp.lang.functional</a>. Edited by Graham Hutton,
+              University of Nottingham.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              20.
+            </p>
+            </td>
+<td>
+            <p>
+              Hewlett-Packard
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.sgi.com/tech/stl/" target="_top">Standard Template Library
+              Programmer's Guide.</a>, Hewlett-Packard Company, 1994
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              21.
+            </p>
+            </td>
+<td>
+            <p>
+              Boost Libraries
+            </p>
+            </td>
+<td>
+            <p>
+              Boost Libraries Documentation.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              22.
+            </p>
+            </td>
+<td>
+            <p>
+              Brian McNamara and Yannis Smaragdakis
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="http://www.cc.gatech.edu/~yannis/fc++/" target="_top">FC++:Functional
+              Programming in C++</a>.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              23.
+            </p>
+            </td>
+<td>
+            <p>
+              Todd Veldhuizen
+            </p>
+            </td>
+<td>
+            <p>
+              <a href="ftp://ftp.cs.indiana.edu/pub/techreports/TR542.pdf" target="_top">Techniques
+              for Scientic C++.</a>
+            </p>
+            </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="acknowledgments.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/repository.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/repository.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,52 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Spirit Repository</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="notes/style_guide.html" title="Style Guide">
+<link rel="next" href="acknowledgments.html" title="Acknowledgments">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="notes/style_guide.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Spirit Repository">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.repository"></a><a class="link" href="repository.html" title="Spirit Repository"> Spirit Repository</a>
+</h2></div></div></div>
+<p>
+      The Spirit repository is
+      a community effort collecting different reusable components (primitives, directives,
+      grammars, etc.) for <span class="emphasis"><em>Spirit.Qi</em></span> parsers and <span class="emphasis"><em>Spirit.Karma</em></span>
+      generators. All components in the repository have been peer reviewed or discussed
+      on the <a href="http://www.nabble.com/The-Spirit-Parser-Library-f3430.html" target="_top">Spirit
+      General List</a>. For more information about the repository see here.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="notes/style_guide.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgments.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/structure.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/structure.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Structure</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="introduction.html" title="Introduction">
+<link rel="next" href="structure/include.html" title="Include">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="structure/include.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Structure">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.structure"></a><a class="link" href="structure.html" title="Structure">Structure</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section">Include</span></dt></dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="introduction.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="structure/include.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/structure/include.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/structure/include.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,226 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Include</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../structure.html" title="Structure">
+<link rel="prev" href="../structure.html" title="Structure">
+<link rel="next" href="../abstracts.html" title="Abstracts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../structure.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../structure.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../abstracts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Include">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.structure.include"></a><a class="link" href="include.html" title="Include">Include</a>
+</h3></div></div></div>
+<p>
+        Spirit is a header file only library. There are no libraries to link to.
+        This section documents the structure of the Spirit headers.
+      </p>
+<p>
+        Spirit contains five sub-libraries plus a 'support' module where common support
+        classes are placed:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Classic
+        </li>
+<li class="listitem">
+          Qi
+        </li>
+<li class="listitem">
+          Karma
+        </li>
+<li class="listitem">
+          Lex
+        </li>
+<li class="listitem">
+          Phoenix
+        </li>
+<li class="listitem">
+          Support
+        </li>
+</ul></div>
+<p>
+        The top spirit directory is:
+      </p>
+<pre class="programlisting"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span>
+</pre>
+<p>
+        Currently, the directory contains:
+      </p>
+<pre class="programlisting"><span class="special">[</span><span class="identifier">actor</span><span class="special">]</span>     <span class="special">[</span><span class="identifier">attribute</span><span class="special">]</span>     <span class="special">[</span><span class="identifier">core</span><span class="special">]</span>      <span class="special">[</span><span class="identifier">dynamic</span><span class="special">]</span>
+<span class="special">[</span><span class="identifier">debug</span><span class="special">]</span>     <span class="special">[</span><span class="identifier">error_handling</span><span class="special">][</span><span class="identifier">home</span><span class="special">]</span>      <span class="special">[</span><span class="identifier">include</span><span class="special">]</span>
+<span class="special">[</span><span class="identifier">iterator</span><span class="special">]</span>  <span class="special">[</span><span class="identifier">meta</span><span class="special">]</span>          <span class="special">[</span><span class="identifier">phoenix</span><span class="special">]</span>   <span class="special">[</span><span class="identifier">symbols</span><span class="special">]</span>
+<span class="special">[</span><span class="identifier">tree</span><span class="special">]</span>      <span class="special">[</span><span class="identifier">utility</span><span class="special">]</span>
+</pre>
+<p>
+        These include some old v1.8 directories that are now depracated. These are:
+        actor, attribute, core, dynamic, debug, error_handling, iterator, meta, phoenix,
+        symbols, tree and utility. There is no guarantee that these directories will
+        still be present in future versions of Spirit. We only keep them for backward
+        compatibility. Please be warned.
+      </p>
+<p>
+        Each directory (except include and home) have a corresponding header file
+        that contains forwarding includes of each relevant include file that the
+        directory contains. For example, there exists a <boost/spirit/actor.hpp>
+        header file which includes all the relevant files from the boost/spirit<span class="emphasis"><em>actor</em></span>
+        directory.
+      </p>
+<p>
+        To distinguish between Spirit versions, you can inspect the version file:
+      </p>
+<pre class="programlisting"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+        using the preprocessor define
+      </p>
+<pre class="programlisting"><span class="identifier">SPIRIT_VERSION</span>
+</pre>
+<p>
+        It is a hex number where the first two digits determine the major version
+        while the last two digits determine the minor version. For example:
+      </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">SPIRIT_VERSION</span> <span class="number">0x2010</span> <span class="comment">// version 2.1
+</span></pre>
+<p>
+        The include directory at:
+      </p>
+<pre class="programlisting"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span>
+</pre>
+<p>
+        is a special flat directory that contains all the spirit headers. To accomodate
+        the flat structure, the headers are prefixed with the sub-library name:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          classic_
+        </li>
+<li class="listitem">
+          karma_
+        </li>
+<li class="listitem">
+          lex_
+        </li>
+<li class="listitem">
+          phoenix1_
+        </li>
+<li class="listitem">
+          phoenix_
+        </li>
+<li class="listitem">
+          qi_
+        </li>
+<li class="listitem">
+          support_
+        </li>
+</ul></div>
+<p>
+        For example, if you used to include <boost/spirit/actor.hpp>, which
+        is now a deprecated header, you should instead include <boost/spirit/include/classic_actor.hpp>
+      </p>
+<p>
+        If you want to simply include the main sub-library name, then you can include:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          <boost/spirit/include/classic.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/karma.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/lex.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/phoenix1.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/phoenix.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/qi.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/include/support.hpp>
+        </li>
+</ul></div>
+<p>
+        The home directory:
+      </p>
+<pre class="programlisting"><span class="identifier">BOOST_ROOT</span><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span>
+</pre>
+<p>
+        is the <span class="emphasis"><em>real</em></span> home of spirit. It is the place where the
+        various sub-libraries actually exist. The home directory contains:
+      </p>
+<pre class="programlisting"><span class="special">[</span><span class="identifier">classic</span><span class="special">]</span>   <span class="special">[</span><span class="identifier">karma</span><span class="special">]</span>     <span class="special">[</span><span class="identifier">lex</span><span class="special">]</span>
+<span class="special">[</span><span class="identifier">phoenix</span><span class="special">]</span>   <span class="special">[</span><span class="identifier">qi</span><span class="special">]</span>        <span class="special">[</span><span class="identifier">support</span><span class="special">]</span>
+</pre>
+<p>
+        As usual, these directories have their corresponding include files:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          <boost/spirit/home/classic.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/home/karma.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/home/lex.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/home/phoenix.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/home/qi.hpp>
+        </li>
+<li class="listitem">
+          <boost/spirit/home/support.hpp>
+        </li>
+</ul></div>
+<p>
+        The various sub-libraries include files can be found in each sub-directory
+        containing the particular sub-library. The include structure of a sub-library
+        is covered in its documentation. For consistency, each library follows the
+        same scheme as above.
+      </p>
+<p>
+        To keep it simple, you should use the flat include directory at boost/spirit/include.
+      </p>
+<p>
+        For some additional information about the rationale you might want to have
+        a look at the FAQ entry <a class="link" href="../faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">Header
+        Hell</a>.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../structure.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../structure.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../abstracts.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/support.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/support.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Supporting libraries</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="lex/reference/tokendef.html" title="TokenDef Class">
+<link rel="next" href="support/multi_pass.html" title="The multi pass iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lex/reference/tokendef.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="support/multi_pass.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Supporting libraries">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.support"></a><a class="link" href="support.html" title="Supporting libraries"> Supporting libraries</a>
+</h2></div></div></div>
+<div class="toc"><dl><dt><span class="section"> The multi pass iterator</span></dt></dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lex/reference/tokendef.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="support/multi_pass.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,1084 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>The multi pass iterator</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../support.html" title="Supporting libraries">
+<link rel="prev" href="../support.html" title="Supporting libraries">
+<link rel="next" href="../faq.html" title="Spirit FAQ">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../faq.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="The multi pass iterator">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.support.multi_pass"></a><a class="link" href="multi_pass.html" title="The multi pass iterator"> The multi pass iterator</a>
+</h3></div></div></div>
+<p>
+        Backtracking in <span class="emphasis"><em>Spirit.Qi</em></span> requires the use of the following
+        types of iterator: forward, bidirectional, or random access. Because of backtracking,
+        input iterators cannot be used. Therefore, the standard library classes
+        <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istreambuf_iterator</span></code> and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span></code>,
+        that fall under the category of input iterators, cannot be used. Another
+        input iterator that is of interest is one that wraps a lexer, such as LEX.
+      </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          In general, <span class="emphasis"><em>Spirit.Qi</em></span> generates recursive descent
+          parser which require backtracking parsers by design. For this reason we
+          need to provide at least forward iterators to any of <span class="emphasis"><em>Spirit.Qi</em></span>'s
+          API functions. This is not an absolute requirement though. In the future,
+          we shall see more deterministic parsers that require no more than 1 character
+          (token) of lookahead. Such parsers allow us to use input iterators such
+          as the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span></code> as is.
+        </p></td></tr>
+</table></div>
+<p>
+        Backtracking can be implemented only if we are allowed to save an iterator
+        position, i.e. making a copy of the current iterator. Unfortunately, with
+        an input iterator, there is no way to do so, and thus input iterators will
+        not work with backtracking in <span class="emphasis"><em>Spirit.Qi</em></span>. One solution
+        to this problem is to simply load all the data to be parsed into a container,
+        such as a vector or deque, and then pass the begin and end of the container
+        to <span class="emphasis"><em>Spirit.Qi</em></span>. This method can be too memory intensive
+        for certain applications, which is why the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        iterator was created.
+      </p>
+<a name="spirit.support.multi_pass.using_the_multi_pass"></a><h5>
+<a name="id879744"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_multi_pass">Using the
+        multi_pass</a>
+      </h5>
+<p>
+        The <code class="computeroutput"><span class="identifier">multi_pass</span></code> iterator will
+        convert any input iterator into a forward iterator suitable for use with
+        <span class="emphasis"><em>Spirit.Qi</em></span>. <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        will buffer data when needed and will discard the buffer when its contents
+        is not needed anymore. This happens either if only one copy of the iterator
+        exists or if no backtracking can occur.
+      </p>
+<p>
+        A grammar must be designed with care if the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        iterator is used. Any rule that may need to backtrack, such as one that contains
+        an alternative, will cause data to be buffered. The rules that are optimal
+        to use are repetition constructs (as kleene and plus).
+      </p>
+<p>
+        Sequences of the form <code class="computeroutput"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span></code>
+        will buffer data as well. This is different from the behaviour of Spirit.Classic
+        but for a good reason. Sequences need to reset the current iterator to its
+        initial state if one of the components of a seqeunce fails to match. To compensate
+        for this behaviour we added functionality to the <code class="computeroutput"><span class="identifier">expect</span></code>
+        parsers (i.e. constructs like <code class="computeroutput"><span class="identifier">a</span>
+        <span class="special">></span> <span class="identifier">b</span></code>).
+        Expectation points introduce deterministic points into the grammar ensuring
+        no backtracking can occur if they match. For this reason we clear the buffers
+        of any multi_pass iterator on each expectation point, ensuring minimal buffer
+        content even for large grammars.
+      </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+          If you use an error handler in conjunction with the <code class="computeroutput"><span class="identifier">expect</span></code>
+          parser while utilizing a <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+          iterator and you intend to use the error handler to force a <code class="computeroutput"><span class="identifier">retry</span></code> or a <code class="computeroutput"><span class="identifier">fail</span></code>
+          (see the description of error handlers - <span class="bold"><strong>FIXME</strong></span>:
+          insert link), then you need to instantiate the error handler using <code class="computeroutput"><span class="identifier">retry</span></code> or <code class="computeroutput"><span class="identifier">fail</span></code>,
+          for instance: 
+</p>
+<pre class="programlisting"><span class="identifier">rule</span> <span class="identifier">r</span><span class="special"><</span><span class="identifier">iterator_type</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">on_error</span><span class="special"><</span><span class="identifier">retry</span><span class="special">>(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"Error!"</span><span class="special">));</span>
+</pre>
+<p>
+          If you fail to do so the resulting code will trigger an assert statement
+          at runtime.
+        </p>
+</td></tr>
+</table></div>
+<p>
+        Any rule that repeats, such as kleene_star (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>) or positive such as (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>), will only buffer the data for the current
+        repetition.
+      </p>
+<p>
+        In typical grammars, ambiguity and therefore lookahead is often localized.
+        In fact, many well designed languages are fully deterministic and require
+        no lookahead at all. Peeking at the first character from the input will immediately
+        determine the alternative branch to take. Yet, even with highly ambiguous
+        grammars, alternatives are often of the form <code class="computeroutput"><span class="special">*(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span>
+        <span class="special">|</span> <span class="identifier">c</span> <span class="special">|</span> <span class="identifier">d</span><span class="special">)</span></code>.
+        The input iterator moves on and is never stuck at the beginning. Let's look
+        at a Pascal snippet for example:
+      </p>
+<pre class="programlisting"><span class="identifier">program</span> <span class="special">=</span>
+        <span class="identifier">programHeading</span> <span class="special">>></span> <span class="identifier">block</span> <span class="special">>></span> <span class="char">'.'</span>
+    <span class="special">;</span>
+
+<span class="identifier">block</span> <span class="special">=</span>
+       <span class="special">*(</span>   <span class="identifier">labelDeclarationPart</span>
+        <span class="special">|</span>   <span class="identifier">constantDefinitionPart</span>
+        <span class="special">|</span>   <span class="identifier">typeDefinitionPart</span>
+        <span class="special">|</span>   <span class="identifier">variableDeclarationPart</span>
+        <span class="special">|</span>   <span class="identifier">procedureAndFunctionDeclarationPart</span>
+        <span class="special">)</span>
+    <span class="special">>></span>  <span class="identifier">statementPart</span>
+    <span class="special">;</span>
+</pre>
+<p>
+        Notice the alternatives inside the Kleene star in the rule block . The rule
+        gobbles the input in a linear manner and throws away the past history with
+        each iteration. As this is fully deterministic LL(1) grammar, each failed
+        alternative only has to peek 1 character (token). The alternative that consumes
+        more than 1 character (token) is definitely a winner. After which, the Kleene
+        star moves on to the next.
+      </p>
+<p>
+        Now, after the lecture on the features to be careful with when using <code class="computeroutput"><span class="identifier">multi_pass</span></code>, you may think that <code class="computeroutput"><span class="identifier">multi_pass</span></code> is way too restrictive to use.
+        That's not the case. If your grammar is deterministic, you can make use of
+        the <code class="computeroutput"><span class="identifier">flush_multi_pass</span></code> pseudo
+        parser in your grammar to ensure that data is not buffered when unnecessary
+        (<code class="computeroutput"><span class="identifier">flush_multi_pass</span></code> is available
+        from the <span class="emphasis"><em>Spirit.Qi</em></span> parser Repository).
+      </p>
+<p>
+        Here we present a minimal example showing a minimal use case. The <code class="computeroutput"><span class="identifier">multi_pass</span></code> iterator is highly configurable,
+        but the default policies have been chosen so that its easily usable with
+        input iterators such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istreambuf_iterator</span></code>.
+        For the complete source code of this example please refer to multi_pass.cpp.
+      </p>
+<p>
+        </p>
+<p>
+          
+</p>
+<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="keyword">namespace</span> <span class="identifier">spirit</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">double_</span><span class="special">;</span>
+    <span class="keyword">using</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">eol</span><span class="special">;</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">ifstream</span> <span class="identifier">in</span><span class="special">(</span><span class="string">"multi_pass.txt"</span><span class="special">);</span>    <span class="comment">// we get our input from this file
+</span>    <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">in</span><span class="special">.</span><span class="identifier">is_open</span><span class="special">())</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Could not open input file: 'multi_pass.txt'"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+        <span class="keyword">return</span> <span class="special">-</span><span class="number">1</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="keyword">typedef</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">istreambuf_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span> <span class="identifier">base_iterator_type</span><span class="special">;</span>
+    <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">multi_pass</span><span class="special"><</span><span class="identifier">base_iterator_type</span><span class="special">></span> <span class="identifier">first</span> <span class="special">=</span> 
+        <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">make_default_multi_pass</span><span class="special">(</span><span class="identifier">base_iterator_type</span><span class="special">(</span><span class="identifier">in</span><span class="special">));</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">v</span><span class="special">;</span>
+    <span class="keyword">bool</span> <span class="identifier">result</span> <span class="special">=</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">(</span><span class="identifier">first</span>
+      <span class="special">,</span> <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">make_default_multi_pass</span><span class="special">(</span><span class="identifier">base_iterator_type</span><span class="special">())</span>
+      <span class="special">,</span> <span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">)</span>              <span class="comment">// recognize list of doubles
+</span>      <span class="special">,</span> <span class="identifier">space</span> <span class="special">|</span> <span class="char">'#'</span> <span class="special">>></span> <span class="special">*(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="identifier">eol</span><span class="special">)</span> <span class="special">>></span> <span class="identifier">eol</span>      <span class="comment">// comment skipper
+</span>      <span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>                                       <span class="comment">// data read from file
+</span>
+    <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">result</span><span class="special">)</span> <span class="special">{</span>
+        <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Failed parsing input file!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+        <span class="keyword">return</span> <span class="special">-</span><span class="number">2</span><span class="special">;</span>
+    <span class="special">}</span>
+
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Successfully parsed input file!"</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<a name="spirit.support.multi_pass.using_the_flush_multi_pass_parser"></a><h5>
+<a name="id882666"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_flush_multi_pass_parser">Using
+        the flush_multi_pass parser</a>
+      </h5>
+<p>
+        The Spirit Repository
+        contains the <code class="computeroutput"><span class="identifier">flush_multi_pass</span></code>
+        parser component. This is usable in conjunction with the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        iterator to minimize the buffering. It allows to insert explicit synchronization
+        points into your grammar where it is safe to clear any stored input as it
+        is ensured that no backtracking can occur at this point anymore.
+      </p>
+<p>
+        When the <code class="computeroutput"><span class="identifier">flush_multi_pass</span></code>
+        parser is used with <code class="computeroutput"><span class="identifier">multi_pass</span></code>,
+        it will call <code class="computeroutput"><span class="identifier">multi_pass</span><span class="special">::</span><span class="identifier">clear_queue</span><span class="special">()</span></code>.
+        This will cause any buffered data to be erased. This also will invalidate
+        all other copies of multi_pass and they should not be used. If they are,
+        an <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">illegal_backtracking</span></code> exception will be
+        thrown.
+      </p>
+<a name="spirit.support.multi_pass.the_multi_pass_policies"></a><h5>
+<a name="id882760"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.the_multi_pass_policies">The multi_pass
+        Policies</a>
+      </h5>
+<p>
+        The <code class="computeroutput"><span class="identifier">multi_pass</span></code> iterator is
+        a templated class configurable using policies. The description of <code class="computeroutput"><span class="identifier">multi_pass</span></code> above is how it was originally
+        implemented (before it used policies), and is the default configuration now.
+        But, <code class="computeroutput"><span class="identifier">multi_pass</span></code> is capable
+        of much more. Because of the open-ended nature of policies, you can write
+        your own policy to make <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        behave in a way that we never before imagined.
+      </p>
+<p>
+        The multi_pass class has two template parameters:
+      </p>
+<div class="variablelist" title="The multi_pass template parameters">
+<p class="title"><b>The multi_pass template parameters</b></p>
+<dl>
+<dt><span class="term">Input</span></dt>
+<dd><p>
+            The type multi_pass uses to acquire it's input. This is typically an
+            input iterator, or functor.
+          </p></dd>
+<dt><span class="term">Policies</span></dt>
+<dd><p>
+            The combined policies to use to create an instance of a multi_pass iterator.
+            This combined policy type is described below
+          </p></dd>
+</dl>
+</div>
+<p>
+        It is possible to implement all of the required functionality of the combinded
+        policy in a single class. But it has shown to be more convenient to split
+        this into four different groups of functions, i.e. four separate, but well
+        coordinated policies. For this reason the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        library implements a template <code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">default_policy</span></code>
+        allowing to combine several different policies, each implementing one of
+        the functionality groups:
+      </p>
+<div class="table">
+<a name="id882866"></a><p class="title"><b>Table 11. Policies needed for default_policy template</b></p>
+<div class="table-contents"><table class="table" summary="Policies needed for default_policy template">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+            <p>
+              Template Parameter
+            </p>
+            </th>
+<th>
+            <p>
+              Description
+            </p>
+            </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">OwnershipPolicy</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy determines how <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              deals with it's shared components.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">CheckingPolicy</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy determines how checking for invalid iterators is done.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">InputPolicy</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              A class that defines how <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              acquires its input. The <code class="computeroutput"><span class="identifier">InputPolicy</span></code>
+              is parameterized by the <code class="computeroutput"><span class="identifier">Input</span></code>
+              template parameter to the <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">StoragePolicy</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              The buffering scheme used by <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              is determined and managed by the StoragePolicy.
+            </p>
+            </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+        The <code class="computeroutput"><span class="identifier">multi_pass</span></code> library contains
+        several predefined policy implementations for each of the policy types as
+        described above. First we will describe those predefined types. Afterwards
+        we will give some guidelines how you can write your own policy implementations.
+      </p>
+<a name="spirit.support.multi_pass.predefined_policies"></a><h5>
+<a name="id883058"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.predefined_policies">Predefined
+        policies</a>
+      </h5>
+<p>
+        All predefined <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        policies are defined in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">iterator_policies</span></code>.
+      </p>
+<div class="table">
+<a name="id883100"></a><p class="title"><b>Table 12. Predefined policy classes</b></p>
+<div class="table-contents"><table class="table" summary="Predefined policy classes">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+            <p>
+              Class name
+            </p>
+            </th>
+<th>
+            <p>
+              Description
+            </p>
+            </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+            <p>
+              <span class="bold"><strong>InputPolicy</strong></span> classes
+            </p>
+            </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">input_iterator</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy directs <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              to read from an input iterator of type <code class="computeroutput"><span class="identifier">Input</span></code>.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">lex_input</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy obtains it's input by calling yylex(), which would typically
+              be provided by a scanner generated by Flex.
+              If you use this policy your code must link against a Flex
+              generated scanner.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">functor_input</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This input policy obtains it's data by calling a functor of type <code class="computeroutput"><span class="identifier">Input</span></code>. The functor must meet certain
+              requirements. It must have a typedef called <code class="computeroutput"><span class="identifier">result_type</span></code>
+              which should be the type returned from <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>. Also, since an input policy needs
+              a way to determine when the end of input has been reached, the functor
+              must contain a static variable named <code class="computeroutput"><span class="identifier">eof</span></code>
+              which is comparable to a variable of <code class="computeroutput"><span class="identifier">result_type</span></code>.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">split_functor_input</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This is essentially the same as the <code class="computeroutput"><span class="identifier">functor_input</span></code>
+              policy except that the (user supplied) funtion object exposes separate
+              <code class="computeroutput"><span class="identifier">unique</span></code> and <code class="computeroutput"><span class="identifier">shared</span></code> sub classes, allowing to integrate
+              the functors <span class="emphasis"><em>unique</em></span> data members with the <code class="computeroutput"><span class="identifier">multi_pass</span></code> data items held by each
+              instance and its <span class="emphasis"><em>shared</em></span> data members will be integrated
+              with the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              members shared by all copies.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <span class="bold"><strong>OwnershipPolicy</strong></span> classes
+            </p>
+            </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">ref_counted</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This class uses a reference counting scheme. The <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              will delete it's shared components when the count reaches zero.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">first_owner</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              When this policy is used, the first <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              created will be the one that deletes the shared data. Each copy will
+              not take ownership of the shared data. This works well for Spirit,
+              since no dynamic allocation of iterators is done. All copies are made
+              on the stack, so the original iterator has the longest lifespan.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <span class="bold"><strong>CheckingPolicy</strong></span> classes
+            </p>
+            </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">no_check</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy does no checking at all.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">buf_id_check</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy keeps around a buffer id, or a buffer age. Every time
+              <code class="computeroutput"><span class="identifier">clear_queue</span><span class="special">()</span></code>
+              is called on a <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+              iterator, it is possible that all other iterators become invalid. When
+              <code class="computeroutput"><span class="identifier">clear_queue</span><span class="special">()</span></code>
+              is called, <code class="computeroutput"><span class="identifier">buf_id_check</span></code>
+              increments the buffer id. When an iterator is dereferenced, this policy
+              checks that the buffer id of the iterator matches the shared buffer
+              id. This policy is most effective when used together with the <code class="computeroutput"><span class="identifier">split_std_deque</span></code> StoragePolicy. It
+              should not be used with the <code class="computeroutput"><span class="identifier">fixed_size_queue</span></code>
+              StoragePolicy, because it will not detect iterator dereferences that
+              are out of range.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              full_check
+            </p>
+            </td>
+<td>
+            <p>
+              This policy has not been implemented yet. When it is, it will keep
+              track of all iterators and make sure that they are all valid. This
+              will be mostly useful for debugging purposes as it will incur significant
+              overhead.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <span class="bold"><strong>StoragePolicy</strong></span> classes
+            </p>
+            </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">split_std_deque</span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              Despite its name this policy keeps all buffered data in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></code>. All data is stored as long
+              as there is more than one iterator. Once the iterator count goes down
+              to one, and the queue is no longer needed, it is cleared, freeing up
+              memory. The queue can also be forcibly cleared by calling <code class="computeroutput"><span class="identifier">multi_pass</span><span class="special">::</span><span class="identifier">clear_queue</span><span class="special">()</span></code>.
+            </p>
+            </td>
+</tr>
+<tr>
+<td>
+            <p>
+              <code class="computeroutput"><span class="identifier">fixed_size_queue</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span></code>
+            </p>
+            </td>
+<td>
+            <p>
+              This policy keeps a circular buffer that is size <code class="computeroutput"><span class="identifier">N</span><span class="special">+</span><span class="number">1</span></code> and
+              stores <code class="computeroutput"><span class="identifier">N</span></code> elements.
+              <code class="computeroutput"><span class="identifier">fixed_size_queue</span></code> is
+              a template with a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+              parameter that specified the queue size. It is your responsibility
+              to ensure that <code class="computeroutput"><span class="identifier">N</span></code> is
+              big enough for your parser. Whenever the foremost iterator is incremented,
+              the last character of the buffer is automatically erased. Currently
+              there is no way to tell if an iterator is trailing too far behind and
+              has become invalid. No dynamic allocation is done by this policy during
+              normal iterator operation, only on initial construction. The memory
+              usage of this <code class="computeroutput"><span class="identifier">StoragePolicy</span></code>
+              is set at <code class="computeroutput"><span class="identifier">N</span><span class="special">+</span><span class="number">1</span></code> bytes, unlike <code class="computeroutput"><span class="identifier">split_std_deque</span></code>,
+              which is unbounded.
+            </p>
+            </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><a name="spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass"></a><h5>
+<a name="id885154"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass">Combinations:
+        How to specify your own custom multi_pass</a>
+      </h5>
+<p>
+        The beauty of policy based designs is that you can mix and match policies
+        to create your own custom iterator by selecting the policies you want. Here's
+        an example of how to specify a custom <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        that wraps an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span></code>,
+        and is slightly more efficient than the default <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        (as generated by the <code class="computeroutput"><span class="identifier">make_default_multi_pass</span><span class="special">()</span></code> API function) because it uses the <code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">first_owner</span></code> OwnershipPolicy and the <code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">no_check</span></code> CheckingPolicy:
+      </p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">multi_pass</span><span class="special"><</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
+  <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">default_policy</span><span class="special"><</span>
+        <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">first_owner</span>
+      <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">no_check</span>
+      <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">input_iterator</span>
+      <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">split_std_deque</span>
+    <span class="special">></span> 
+<span class="special">></span> <span class="identifier">first_owner_multi_pass_type</span><span class="special">;</span>
+</pre>
+<p>
+        The default template parameters for <code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">default_policy</span></code>
+        are:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">ref_counted</span></code> OwnershipPolicy
+        </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">no_check</span></code> CheckingPolicy, if <code class="computeroutput"><span class="identifier">BOOST_SPIRIT_DEBUG</span></code> is defined: <code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">buf_id_check</span></code> CheckingPolicy
+        </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">input_iterator</span></code> InputPolicy, and
+        </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">split_std_deque</span></code> StoragePolicy.
+        </li>
+</ul></div>
+<p>
+        So if you use <code class="computeroutput"><span class="identifier">multi_pass</span><span class="special"><</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
+        <span class="special">></span></code> you will get those pre-defined
+        behaviors while wrapping an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span></code>.
+      </p>
+<a name="spirit.support.multi_pass.dealing_with_constant_look_ahead"></a><h5>
+<a name="id885576"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.dealing_with_constant_look_ahead">Dealing
+        with constant look ahead</a>
+      </h5>
+<p>
+        There is one other pre-defined class called <code class="computeroutput"><span class="identifier">look_ahead</span></code>.
+        The class <code class="computeroutput"><span class="identifier">look_ahead</span></code> is another
+        predefine <code class="computeroutput"><span class="identifier">multi_pass</span></code> iterator
+        type. It has two template parameters: <code class="computeroutput"><span class="identifier">Input</span></code>,
+        the type of the input iterator to wrap, and a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">N</span></code>, which specifies the size of the buffer
+        to the <code class="computeroutput"><span class="identifier">fixed_size_queue</span></code> policy.
+        While the default multi_pass configuration is designed for safey, <code class="computeroutput"><span class="identifier">look_ahead</span></code> is designed for speed. <code class="computeroutput"><span class="identifier">look_ahead</span></code> is derived from a multi_pass
+        with the following policies: <code class="computeroutput"><span class="identifier">input_iterator</span></code>
+        InputPolicy, <code class="computeroutput"><span class="identifier">first_owner</span></code>
+        OwnershipPolicy, <code class="computeroutput"><span class="identifier">no_check</span></code>
+        CheckingPolicy, and <code class="computeroutput"><span class="identifier">fixed_size_queue</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span></code>
+        StoragePolicy.
+      </p>
+<a name="spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy"></a><h5>
+<a name="id885708"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy">How
+        to write a functor for use with the <code class="computeroutput"><span class="identifier">functor_input</span></code>
+        InputPolicy</a>
+      </h5>
+<p>
+        If you want to use the <code class="computeroutput"><span class="identifier">functor_input</span></code>
+        InputPolicy, you can write your own function object that will supply the
+        input to <code class="computeroutput"><span class="identifier">multi_pass</span></code>. The
+        function object must satisfy several requirements. It must have a typedef
+        <code class="computeroutput"><span class="identifier">result_type</span></code> which specifies
+        the return type of its <code class="computeroutput"><span class="keyword">operator</span><span class="special">()</span></code>. This is standard practice in the STL.
+        Also, it must supply a static variable called eof which is compared against
+        to know whether the input has reached the end. Last but not least the function
+        object must be default constructible. Here is an example:
+      </p>
+<pre class="programlisting"><span class="comment">// define the function object
+</span><span class="keyword">class</span> <span class="identifier">iterate_a2m</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+    <span class="keyword">typedef</span> <span class="keyword">char</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+    <span class="identifier">iterate_a2m</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">c</span><span class="special">(</span><span class="char">'A'</span><span class="special">)</span> <span class="special">{}</span>
+    <span class="identifier">iterate_a2m</span><span class="special">(</span><span class="keyword">char</span> <span class="identifier">c</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">c_</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="special">{}</span>
+
+    <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()()</span> <span class="keyword">const</span>
+    <span class="special">{</span>
+        <span class="keyword">if</span> <span class="special">(</span><span class="identifier">c_</span> <span class="special">==</span> <span class="char">'M'</span><span class="special">)</span>
+            <span class="keyword">return</span> <span class="identifier">eof</span><span class="special">;</span>
+        <span class="keyword">return</span> <span class="identifier">c_</span><span class="special">++;</span>
+    <span class="special">}</span>
+
+    <span class="keyword">static</span> <span class="identifier">result_type</span> <span class="identifier">eof</span><span class="special">;</span>
+
+<span class="keyword">private</span><span class="special">:</span>
+    <span class="keyword">char</span> <span class="identifier">c_</span><span class="special">;</span>
+<span class="special">};</span>
+
+<span class="identifier">iterate_a2m</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">iterate_a2m</span><span class="special">::</span><span class="identifier">eof</span> <span class="special">=</span> <span class="identifier">iterate_a2m</span><span class="special">::</span><span class="identifier">result_type</span><span class="special">(</span><span class="char">'\0'</span><span class="special">);</span>
+
+<span class="comment">// create two iterators using the define function object, one of which is 
+</span><span class="comment">// an end iterator
+</span><span class="keyword">typedef</span> <span class="identifier">multi_pass</span><span class="special"><</span><span class="identifier">my_functor</span>
+  <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">functor_input</span>
+  <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">first_owner</span>
+  <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">no_check</span>
+  <span class="special">,</span> <span class="identifier">iterator_policies</span><span class="special">::</span><span class="identifier">split_std_deque</span><span class="special">></span> 
+<span class="identifier">functor_multi_pass_type</span><span class="special">;</span>
+
+<span class="identifier">functor_multi_pass_type</span> <span class="identifier">first</span> <span class="special">=</span> <span class="identifier">functor_multi_pass_t</span><span class="special">(</span><span class="identifier">my_functor</span><span class="special">());</span>
+<span class="identifier">functor_multi_pass_type</span> <span class="identifier">last</span><span class="special">;</span>
+
+<span class="comment">// use the iterators: this will print "ABCDEFGHIJKL"
+</span><span class="keyword">while</span> <span class="special">(</span><span class="identifier">first</span> <span class="special">!=</span> <span class="identifier">last</span><span class="special">)</span> <span class="special">{</span>
+    <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="special">*</span><span class="identifier">first</span><span class="special">;</span>
+    <span class="special">++</span><span class="identifier">first</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<a name="spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass"></a><h5>
+<a name="id886295"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass">How
+        to write policies for use with multi_pass</a>
+      </h5>
+<p>
+        All policies to be used with the <code class="computeroutput"><span class="identifier">default_policy</span></code>
+        template need to have two embedded classes: <code class="computeroutput"><span class="identifier">unique</span></code>
+        and <code class="computeroutput"><span class="identifier">shared</span></code>. The <code class="computeroutput"><span class="identifier">unique</span></code> class needs to implement all required
+        functions for a particular policy type. In addition it may hold all member
+        data items being <span class="emphasis"><em>unique</em></span> for a particular instance of
+        a <code class="computeroutput"><span class="identifier">multi_pass</span></code> (hence the name).
+        The <code class="computeroutput"><span class="identifier">shared</span></code> class does not
+        expose any member functions (except sometimes a constructor), but it may
+        hold all member data items to be <span class="emphasis"><em>shared</em></span> between all
+        copies of a particular <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+      </p>
+<a name="spirit.support.multi_pass.inputpolicy"></a><h5>
+<a name="id886369"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.inputpolicy">InputPolicy</a>
+      </h5>
+<p>
+        An <code class="computeroutput"><span class="identifier">InputPolicy</span></code> must have
+        the following interface:
+      </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">input_policy</span>
+<span class="special">{</span>
+    <span class="comment">// Input is the same type used as the first template parameter
+</span>    <span class="comment">// while instantiating the multi_pass
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">unique</span>
+    <span class="special">{</span>
+        <span class="comment">// these typedef's will be exposed as the multi_pass iterator
+</span>        <span class="comment">// properties
+</span>        <span class="keyword">typedef</span> <span class="identifier">__unspecified_type__</span> <span class="identifier">value_type</span><span class="special">;</span>
+        <span class="keyword">typedef</span> <span class="identifier">__unspecified_type__</span> <span class="identifier">difference_type</span><span class="special">;</span>
+        <span class="keyword">typedef</span> <span class="identifier">__unspecified_type__</span> <span class="identifier">distance_type</span><span class="special">;</span>
+        <span class="keyword">typedef</span> <span class="identifier">__unspecified_type__</span> <span class="identifier">pointer</span><span class="special">;</span>
+        <span class="keyword">typedef</span> <span class="identifier">__unspecified_type__</span> <span class="identifier">reference</span><span class="special">;</span>
+
+        <span class="identifier">unique</span><span class="special">()</span> <span class="special">{}</span>
+        <span class="keyword">explicit</span> <span class="identifier">unique</span><span class="special">(</span><span class="identifier">Input</span><span class="special">)</span> <span class="special">{}</span>
+
+        <span class="comment">// destroy is called whenever the last copy of a multi_pass is
+</span>        <span class="comment">// destructed (ownership_policy::release() returned true)
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// swap is called by multi_pass::swap()
+</span>        <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique</span><span class="special">&);</span>
+
+        <span class="comment">// advance_input is called whenever the next input character/token
+</span>        <span class="comment">// should be fetched. 
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//   t:     is a reference where the next character/token should be 
+</span>        <span class="comment">//          stored
+</span>        <span class="comment">//
+</span>        <span class="comment">// This method is expected to return the parameter t
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="identifier">value_type</span><span class="special">&</span> <span class="identifier">advance_input</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">,</span> <span class="identifier">value_type</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+
+        <span class="comment">// input_at_eof is called to test whether this instance is a 
+</span>        <span class="comment">// end of input iterator.
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//   t:     is the current token 
+</span>        <span class="comment">//
+</span>        <span class="comment">// This method is expected to return true if the end of input is 
+</span>        <span class="comment">// reached. It is often used in the implementation of the function
+</span>        <span class="comment">// storage_policy::is_eof.
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">input_at_eof</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">,</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+
+        <span class="comment">// input_is_valid is called to verify if the parameter t represents 
+</span>        <span class="comment">// a valid input character/token
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//   t:     is the character/token to test for validity
+</span>        <span class="comment">// 
+</span>        <span class="comment">// This method is expected to return true if the parameter t 
+</span>        <span class="comment">// represents a valid character/token.
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">input_is_valid</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">,</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">t</span><span class="special">);</span>
+    <span class="special">};</span>
+
+    <span class="comment">// Input is the same type used as the first template parameter
+</span>    <span class="comment">// while instantiating the multi_pass
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Input</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">shared</span> 
+    <span class="special">{</span>
+        <span class="keyword">explicit</span> <span class="identifier">shared</span><span class="special">(</span><span class="identifier">Input</span><span class="special">)</span> <span class="special">{}</span>
+    <span class="special">};</span>
+<span class="special">};</span>
+</pre>
+<p>
+        It is possible to derive the struct <code class="computeroutput"><span class="identifier">unique</span></code>
+        from the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_input_policy</span></code>. This type implements
+        a minimal sufficient interface for some of the required functions, simplifying
+        the task of writing a new input policy.
+      </p>
+<p>
+        This class may implement a function <code class="computeroutput"><span class="identifier">destroy</span><span class="special">()</span></code> being called during destruction of the
+        last copy of a <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+        This function should be used to free any of the shared data items the policy
+        might have allocated during construction of its <code class="computeroutput"><span class="identifier">shared</span></code>
+        part. Because of the way <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        is implemented any allocated data members in <code class="computeroutput"><span class="identifier">shared</span></code>
+        should <span class="underline">not</span> be deep copied in a copy
+        constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
+      </p>
+<a name="spirit.support.multi_pass.ownershippolicy"></a><h5>
+<a name="id887459"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.ownershippolicy">OwnershipPolicy</a>
+      </h5>
+<p>
+        The <code class="computeroutput"><span class="identifier">OwnershipPolicy</span></code> must
+        have the following interface:
+      </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">ownership_policy</span>
+<span class="special">{</span>
+    <span class="keyword">struct</span> <span class="identifier">unique</span>
+    <span class="special">{</span>
+        <span class="comment">// destroy is called whenever the last copy of a multi_pass is
+</span>        <span class="comment">// destructed (ownership_policy::release() returned true)
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// swap is called by multi_pass::swap()
+</span>        <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique</span><span class="special">&);</span>
+
+        <span class="comment">// clone is called whenever a multi_pass is copied
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">clone</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// release is called whenever a multi_pass is destroyed
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//
+</span>        <span class="comment">// The method is expected to return true if the destructed 
+</span>        <span class="comment">// instance is the last copy of a particular multi_pass. 
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">release</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// is_unique is called to test whether this instance is the only 
+</span>        <span class="comment">// existing copy of a particular multi_pass
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//
+</span>        <span class="comment">// The method is expected to return true if this instance is unique
+</span>        <span class="comment">// (no other copies of this multi_pass exist).
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">is_unique</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+    <span class="special">};</span>
+
+    <span class="keyword">struct</span> <span class="identifier">shared</span> <span class="special">{};</span>
+<span class="special">};</span>
+</pre>
+<p>
+        It is possible to derive the struct <code class="computeroutput"><span class="identifier">unique</span></code>
+        from the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_ownership_policy</span></code>. This type implements
+        a minimal sufficient interface for some of the required functions, simplifying
+        the task of writing a new ownership policy.
+      </p>
+<p>
+        This class may implement a function <code class="computeroutput"><span class="identifier">destroy</span><span class="special">()</span></code> being called during destruction of the
+        last copy of a <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+        This function should be used to free any of the shared data items the policy
+        might have allocated during construction of its <code class="computeroutput"><span class="identifier">shared</span></code>
+        part. Because of the way <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        is implemented any allocated data members in <code class="computeroutput"><span class="identifier">shared</span></code>
+        should <span class="underline">not</span> be deep copied in a copy
+        constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
+      </p>
+<a name="spirit.support.multi_pass.checkingpolicy"></a><h5>
+<a name="id887993"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.checkingpolicy">CheckingPolicy</a>
+      </h5>
+<p>
+        The <code class="computeroutput"><span class="identifier">CheckingPolicy</span></code> must have
+        the following interface:
+      </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">checking_policy</span>
+<span class="special">{</span>
+    <span class="keyword">struct</span> <span class="identifier">unique</span> 
+    <span class="special">{</span>
+        <span class="comment">// swap is called by multi_pass::swap()
+</span>        <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique</span><span class="special">&);</span>
+
+        <span class="comment">// destroy is called whenever the last copy of a multi_pass is
+</span>        <span class="comment">// destructed (ownership_policy::release() returned true)
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// check is called before the multi_pass is dereferenced or 
+</span>        <span class="comment">// incremented. 
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//
+</span>        <span class="comment">// This method is expected to make sure the multi_pass instance is
+</span>        <span class="comment">// still valid. If it is invalid an exception should be thrown.
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">check</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// clear_queue is called whenever the function 
+</span>        <span class="comment">// multi_pass::clear_queue is called on this instance
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">clear_queue</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+    <span class="special">};</span>
+
+    <span class="keyword">struct</span> <span class="identifier">shared</span> <span class="special">{};</span>
+<span class="special">};</span>
+</pre>
+<p>
+        It is possible to derive the struct <code class="computeroutput"><span class="identifier">unique</span></code>
+        from the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_checking_policy</span></code>. This type implements
+        a minimal sufficient interface for some of the required functions, simplifying
+        the task of writing a new checking policy.
+      </p>
+<p>
+        This class may implement a function <code class="computeroutput"><span class="identifier">destroy</span><span class="special">()</span></code> being called during destruction of the
+        last copy of a <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+        This function should be used to free any of the shared data items the policy
+        might have allocated during construction of its <code class="computeroutput"><span class="identifier">shared</span></code>
+        part. Because of the way <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        is implemented any allocated data members in <code class="computeroutput"><span class="identifier">shared</span></code>
+        should <span class="underline">not</span> be deep copied in a copy
+        constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
+      </p>
+<a name="spirit.support.multi_pass.storagepolicy"></a><h5>
+<a name="id888444"></a>
+        <a class="link" href="multi_pass.html#spirit.support.multi_pass.storagepolicy">StoragePolicy</a>
+      </h5>
+<p>
+        A <code class="computeroutput"><span class="identifier">StoragePolicy</span></code> must have
+        the following interface:
+      </p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">storage_policy</span>
+<span class="special">{</span>
+    <span class="comment">// Value is the same type as typename MultiPass::value_type
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">unique</span>
+    <span class="special">{</span>
+        <span class="comment">// destroy is called whenever the last copy of a multi_pass is
+</span>        <span class="comment">// destructed (ownership_policy::release() returned true)
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">destroy</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// swap is called by multi_pass::swap()
+</span>        <span class="keyword">void</span> <span class="identifier">swap</span><span class="special">(</span><span class="identifier">unique</span><span class="special">&);</span>
+
+        <span class="comment">// dereference is called whenever multi_pass::operator*() is invoked
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//
+</span>        <span class="comment">// This function is expected to return a reference to the current
+</span>        <span class="comment">// character/token.
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">::</span><span class="identifier">reference</span> <span class="identifier">dereference</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// increment is called whenever multi_pass::operator++ is invoked
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">increment</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">clear_queue</span><span class="special">(</span><span class="identifier">MultiPass</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// is_eof is called to test whether this instance is a end of input 
+</span>        <span class="comment">// iterator.
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//
+</span>        <span class="comment">// This method is expected to return true if the end of input is 
+</span>        <span class="comment">// reached. 
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">is_eof</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">);</span>
+
+        <span class="comment">// less_than is called whenever multi_pass::operator==() is invoked
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//   rhs:   is the multi_pass reference this instance is compared 
+</span>        <span class="comment">//          to
+</span>        <span class="comment">//
+</span>        <span class="comment">// This function is expected to return true if the current instance
+</span>        <span class="comment">// is eual to the right hand side multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">equal_to</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">,</span> <span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+        <span class="comment">// less_than is called whenever multi_pass::operator<() is invoked
+</span>        <span class="comment">//
+</span>        <span class="comment">//   mp:    is a reference to the whole multi_pass instance
+</span>        <span class="comment">//   rhs:   is the multi_pass reference this instance is compared 
+</span>        <span class="comment">//          to
+</span>        <span class="comment">//
+</span>        <span class="comment">// This function is expected to return true if the current instance
+</span>        <span class="comment">// is less than the right hand side multi_pass instance
+</span>        <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">MultiPass</span><span class="special">></span>
+        <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">less_than</span><span class="special">(</span><span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">mp</span><span class="special">,</span> <span class="identifier">MultiPass</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">rhs</span><span class="special">);</span>
+    <span class="special">};</span>
+
+    <span class="comment">// Value is the same type as typename MultiPass::value_type
+</span>    <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">></span>
+    <span class="keyword">struct</span> <span class="identifier">shared</span> <span class="special">{};</span>
+<span class="special">};</span>
+</pre>
+<p>
+        It is possible to derive the struct <code class="computeroutput"><span class="identifier">unique</span></code>
+        from the type <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">default_storage_policy</span></code>. This type implements
+        a minimal sufficient interface for some of the required functions, simplifying
+        the task of writing a new storage policy.
+      </p>
+<p>
+        This class may implement a function <code class="computeroutput"><span class="identifier">destroy</span><span class="special">()</span></code> being called during destruction of the
+        last copy of a <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
+        This function should be used to free any of the shared data items the policy
+        might have allocated during construction of its <code class="computeroutput"><span class="identifier">shared</span></code>
+        part. Because of the way <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+        is implemented any allocated data members in <code class="computeroutput"><span class="identifier">shared</span></code>
+        should <span class="underline">not</span> be deep copied in a copy
+        constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
+      </p>
+<p>
+        Generally, a <code class="computeroutput"><span class="identifier">StoragePolicy</span></code>
+        is the trickiest policy to implement. You should study and understand the
+        existing <code class="computeroutput"><span class="identifier">StoragePolicy</span></code> classes
+        before you try and write your own.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../support.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../support.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../faq.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: branches/release/libs/spirit/doc/html/spirit/what_s_new.html
==============================================================================
--- (empty file)
+++ branches/release/libs/spirit/doc/html/spirit/what_s_new.html	2009-09-14 12:51:35 EDT (Mon, 14 Sep 2009)
@@ -0,0 +1,314 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>What's New</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="prev" href="preface.html" title="Preface">
+<link rel="next" href="introduction.html" title="Introduction">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="preface.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="What's New">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="spirit.what_s_new"></a><a class="link" href="what_s_new.html" title="What's New">What's New</a>
+</h2></div></div></div>
+<a name="spirit.what_s_new.spirit_classic"></a><h4>
+<a name="id586602"></a>
+      <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_classic">Spirit Classic</a>
+    </h4>
+<p>
+      The Spirit V1.8.x code base has been integrated with Spirit V2. It is now called
+      Spirit.Classic.
+      Since the directory structure has changed (the Spirit Classic headers are now
+      moved to the $BOOST_ROOT/boost/spirit/home/classic directory), we created forwarding headers allowing existing applications
+      to compile without any change. However, these forwarding headers are deprecated,
+      which will result in corresponding warnings generated for each of the headers
+      starting with Boost V1.38. The forwarding headers are expected to be removed
+      in the future.
+    </p>
+<p>
+      The recommended way of using Spirit Classic now is to include header files
+      from the directory $BOOST_ROOT/boost/spirit/include. All Spirit Classic headers in this directory have a 'classic_'
+      prefixed to their name. For example the include
+    </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+      now should be written as:
+    </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">classic_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+      To avoid namespace conflicts with the new Spirit V2 library we moved Spirit
+      Classic into the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">classic</span></code>.
+      All references to the former namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span></code>
+      need to be adjusted as soon as the header names are corrected as described
+      above. As an alternative you can define the preprocessor constant <code class="computeroutput"><span class="identifier">BOOST_SPIRIT_USE_OLD_NAMESPACE</span></code>, which will
+      force the Spirit Classic code to be in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span></code>
+      as before. This is not recommended, though, as it may result in naming clashes.
+    </p>
+<p>
+      The change of the namespace will be automatically deactivated whenever the
+      deprecated include files are being used. This ensures full backwards compatibility
+      for existing applications.
+    </p>
+<a name="spirit.what_s_new.spirit_v2_1"></a><h4>
+<a name="id586795"></a>
+      <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_v2_1">Spirit V2.1</a>
+    </h4>
+<a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0__boost_v1_37_0__to_2_x__boost_v1_41_0_"></a><h4>
+<a name="id586808"></a>
+      <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0__boost_v1_37_0__to_2_x__boost_v1_41_0_">What's
+      changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
+      from V2.0 (Boost V1.37.0) to 2.x (Boost V1.41.0)</a>
+    </h4>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+Spirit is now based on
+        the newest version of Boost.Proto
+</li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span></code>, <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_format</span></code>
+        now post-skip by default.
+      </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate_delimited</span></code> and <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">format_delimited</span></code>
+        now don't do pre- delimiting by default.
+      </li>
+<li class="listitem">
+        Changed parameter sequence of <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span></code>,
+        <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_match</span></code>, <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate_delimited</span></code>,
+        and <code class="computeroutput"><span class="identifier">match_delimited</span></code>. The
+        attribute is now always the last parameter.
+      </li>
+<li class="listitem">
+        Added new overloads of those functions allowing to explicitly specify the
+        post-skipping and pre-delimiting behavior.
+      </li>
+<li class="listitem">
+        Added multi attribute API functions
+      </li>
+<li class="listitem">
+        Removed <code class="computeroutput"><span class="identifier">grammar_def</span><span class="special"><></span></code>
+</li>
+<li class="listitem">
+        Removed functions <code class="computeroutput"><span class="identifier">make_parser</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">make_generator</span><span class="special">()</span></code>
+</li>
+<li class="listitem">
+        Removed <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">none</span></code> and <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">none</span></code>
+</li>
+<li class="listitem">
+        Sequences and lists now accept a standard container as their attribute
+      </li>
+<li class="listitem">
+        The string placeholder terminal now can take other strings as its parameter
+        (i.e. std::string)
+      </li>
+<li class="listitem">
+        All terminals taking literals now accept a (lazy) function object as well
+      </li>
+<li class="listitem">
+        All placeholders for terminals and directives (such as <code class="computeroutput"><span class="identifier">int_</span></code>,
+        <code class="computeroutput"><span class="identifier">double_</span></code>, <code class="computeroutput"><span class="identifier">verbatim</span></code>,
+        etc.) were previously defined in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span></code>
+        only. Now these are additionally imported into the namespaces <code class="computeroutput"><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span></code>, <code class="computeroutput"><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span></code>,
+        and <code class="computeroutput"><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span></code> (if they are supported by the corresponding
+        sub-library).
+      </li>
+<li class="listitem">
+        The terminal placeholders <code class="computeroutput"><span class="identifier">char_</span></code>
+        and <code class="computeroutput"><span class="identifier">string</span></code> are not defined
+        in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span></code> anymore as they have been moved
+        to the character set namespaces, allowing to do proper character set handling
+        based on the used namespace (as <code class="computeroutput"><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span></code>,
+        etc.)
+      </li>
+<li class="listitem">
+        The <code class="computeroutput"><span class="identifier">uint</span></code>, <code class="computeroutput"><span class="identifier">ushort</span></code>,
+        <code class="computeroutput"><span class="identifier">ulong</span></code>, and <code class="computeroutput"><span class="identifier">byte</span></code> terminal placeholders have been renamed
+        to <code class="computeroutput"><span class="identifier">uint_</span></code>, <code class="computeroutput"><span class="identifier">ushort_</span></code>,
+        <code class="computeroutput"><span class="identifier">ulong_</span></code>, and <code class="computeroutput"><span class="identifier">byte_</span></code>.
+      </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip</span><span class="special">[]</span></code>
+        now re-enables outer skipper if used inside <code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>
+</li>
+<li class="listitem">
+        Added <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">maxwidth</span><span class="special">[]</span></code>
+        directive
+      </li>
+<li class="listitem">
+        Added <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">omit</span><span class="special">[]</span></code>
+        directive (see <a class="link" href="karma/reference/directive/omit.html" title="Consume Attribute (omit[])"><code class="computeroutput"><span class="identifier">omit</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>)
+      </li>
+<li class="listitem">
+        Added <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">[]</span></code>
+        directive (see <a class="link" href="karma/reference/directive/buffer.html" title="Temporary Output Buffering (buffer[])"><code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code></a>)
+      </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit</span><span class="special">[]</span></code>
+        now re-enables outer delimiter if used inside <code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>
+</li>
+<li class="listitem">
+        karma: added and-predicate (<code class="computeroutput"><span class="keyword">operator</span><span class="special">&()</span></code>) and not-predicate (<code class="computeroutput"><span class="keyword">operator</span><span class="special">!()</span></code>)
+      </li>
+<li class="listitem">
+        karma: changed semantics of <code class="computeroutput"><span class="identifier">char_</span><span class="special">()</span></code>, <code class="computeroutput"><span class="identifier">string</span><span class="special">()</span></code>, <code class="computeroutput"><span class="identifier">int_</span><span class="special">()</span></code> et.al., and <code class="computeroutput"><span class="identifier">double_</span><span class="special">()</span></code> et.al.: all of these generators now always
+        expose an attribute. If they do not have an associate attribute, they generate
+        their immediate literal. If they have an associated attribute, the generators
+        first test if the attribute value is equal to the immediate literal. They
+        fail not while generating anything if those are not equal. Otherwise they
+        generate their immediate literal. For more information see for instance
+        <a class="link" href="karma/reference/numeric/signed_int.html" title="Signed Integer Number Generators (int_, etc.)"><code class="computeroutput"><span class="identifier">int_</span></code></a>.
+      </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">lit</span><span class="special">()</span></code> can
+        now be used to generate integer and floating point numbers
+      </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span></code> and <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">rule</span></code>
+        now can be directly initialzed using their copy constructor. I.e. this works
+        now: <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special"><...></span>
+        <span class="identifier">r</span> <span class="special">=</span> <span class="special">...</span><span class="identifier">some</span> <span class="identifier">parser</span><span class="special">...;</span></code>.The
+        semantics of this initalization are equivalent to initializing them using
+        <code class="computeroutput"><span class="keyword">operator</span><span class="special">%=()</span></code>
+        (auto attribute propagation is enabled).
+      </li>
+</ul></div>
+<a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0__boost_v1_37_0__to_2_x__boost_v1_41_0_"></a><h4>
+<a name="id590381"></a>
+      <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0__boost_v1_37_0__to_2_x__boost_v1_41_0_">What's
+      changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.0 (Boost V1.37.0) to 2.x
+      (Boost V1.41.0)</a>
+    </h4>
+<p>
+      Here is a list of changes in <span class="emphasis"><em>Spirit.Lex</em></span> since version
+      2.0. <span class="emphasis"><em>Spirit.Lex</em></span> 2.x is a complete rewrite of the <span class="emphasis"><em>Spirit.Lex</em></span>
+      distributed with Boost V1.37. As all parts of the Spirit
+      library it is usable either standalone or in conjunction with the other parts.
+      <span class="emphasis"><em>Spirit.Lex</em></span> now uses the infrastructure provided by Spirit version 2.1.
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+        The lex::lexer_def class has been renamed to lex::lexer, while the original
+        class lex::lexer does not exist anymore. This simplifies the creation of
+        lexers.
+      </li>
+<li class="listitem">
+        The lex::lexer class does not have the function <code class="computeroutput"><span class="identifier">def</span><span class="special">(</span><span class="identifier">Self</span><span class="special">&</span>
+        <span class="identifier">self</span><span class="special">)</span></code>
+        anymore, token definitions can be added to the lexer at any time, usually
+        in the constructor of the user defined lexer class: 
+<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Lexer</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">example_tokens</span> <span class="special">:</span> <span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span>
+<span class="special">{</span>
+      <span class="identifier">example_lexer</span><span class="special">()</span>
+      <span class="special">{</span>
+          <span class="comment">// your token definitions here
+</span>          <span class="keyword">this</span><span class="special">-></span><span class="identifier">self</span> <span class="special">=</span> <span class="special">...</span>
+      <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+</li>
+<li class="listitem">
+        The new lexer class now can be directly used, their is no need anymore to
+        wrap it using the <code class="computeroutput"><span class="identifier">make_lexer</span><span class="special">()</span></code> template as before. Therefore the function
+        <code class="computeroutput"><span class="identifier">make_lexer</span><span class="special">()</span></code>
+        has been removed.
+      </li>
+<li class="listitem">
+        The <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize_and_parse</span><span class="special">()</span></code>
+        and <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">tokenize_and_phrase_parse</span><span class="special">()</span></code>
+        functions have been changed to match the parameter sequence as implemented
+        by the <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">()</span></code>
+        and <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">phrase_parse</span><span class="special">()</span></code>
+        functions. Both take a possibly arbitrary number of attribute arguments as
+        its last parameters (well, the number of attributes is limited by the macro
+        <code class="computeroutput"><span class="identifier">SPIRIT_ARGUMENTS_LIMIT</span></code>, which
+        defaults to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>).
+      </li>
+<li class="listitem">
+        The <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl_lexer</span></code>, and <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl_token</span></code>
+        classes have been moved to the <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl</span></code>
+        namespace and the names have been changed to <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">lexer</span></code>,
+        <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl</span><span class="special">::</span><span class="identifier">token</span></code> (the same applies to the <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexert_actor_lexer</span></code>,
+        and the <code class="computeroutput"><span class="identifier">static_lexertl_</span><span class="special">*</span></code>
+        family of types).
+      </li>
+<li class="listitem">
+        The class <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexertl_token_set</span></code> has been removed alltogether
+        as its complete functionality is available from the lexer class.
+      </li>
+<li class="listitem">
+        The <span class="emphasis"><em>Spirit.Lex</em></span> library has been updated to use the newest
+        version of Ben Hansons Lexertl
+        lexer construction library (Boost review pending).
+      </li>
+<li class="listitem">
+        The <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lexer</span><span class="special"><</span><span class="identifier">Lexer</span><span class="special">></span></code>
+        template constructor now takes an optional parameter specifying the <code class="computeroutput"><span class="identifier">match_flags</span></code> to be used for table generation.
+        Currently, there are the following flags available: 
+<pre class="programlisting"><span class="identifier">match_flags</span><span class="special">::</span><span class="identifier">match_default</span><span class="special">,</span>          <span class="comment">// no flags
+</span><span class="identifier">match_flags</span><span class="special">::</span><span class="identifier">match_not_dot_newline</span><span class="special">,</span>  <span class="comment">// the regex '.' doesn't match newlines
+</span><span class="identifier">match_flags</span><span class="special">::</span><span class="identifier">match_icase</span>             <span class="comment">// all matching operations are case insensitive
+</span></pre>
+        If no parameter is passed to the constructor, <code class="computeroutput"><span class="identifier">match_flags</span><span class="special">::</span><span class="identifier">match_default</span></code>
+        is used, i.e. the <code class="computeroutput"><span class="special">.</span></code> matches
+        newlines and matching is case sensitive.
+      </li>
+<li class="listitem">
+        The <code class="computeroutput"><span class="identifier">char_</span><span class="special">()</span></code>
+        and <code class="computeroutput"><span class="identifier">string</span><span class="special">()</span></code>
+        placeholders can now be used for token definitions as a replacement for
+        <code class="computeroutput"><span class="identifier">token_def</span></code>, although it is
+        still possible to use the latter.
+      </li>
+<li class="listitem">
+        Lexer semantic actions now have to conform to a changed interface (see <a class="link" href="lex/abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer Semantic Actions</a>
+        for details).
+      </li>
+<li class="listitem">
+        Added placeholder symbols usable from the inside of lexer semantic actions
+        while using Phoenix: _start, _end, _eoi, _state, _val, and _pass (see <a class="link" href="lex/abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer Semantic Actions</a>
+        for more details).
+      </li>
+<li class="listitem">
+        Added (lazy) support functions usable from the inside of lexer semantic actions
+        while using Phoenix: <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">more</span><span class="special">()</span></code>, <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">less</span><span class="special">()</span></code>, and <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">lookahead</span><span class="special">()</span></code> (see <a class="link" href="lex/abstracts/lexer_semantic_actions.html" title="Lexer Semantic Actions">Lexer
+        Semantic Actions</a> for more details).
+      </li>
+<li class="listitem">
+        Removed <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">omitted</span></code> in favor of <code class="computeroutput"><span class="identifier">lex</span><span class="special">::</span><span class="identifier">omit</span></code>
+        to unify the overall interface.
+      </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+        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)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="preface.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>