diff options
Diffstat (limited to 'tools/quickbook/src/doc_info_grammar.cpp')
-rw-r--r-- | tools/quickbook/src/doc_info_grammar.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/tools/quickbook/src/doc_info_grammar.cpp b/tools/quickbook/src/doc_info_grammar.cpp index 563efc34e..1d71e3b3e 100644 --- a/tools/quickbook/src/doc_info_grammar.cpp +++ b/tools/quickbook/src/doc_info_grammar.cpp @@ -11,7 +11,6 @@ #include <map> #include <boost/foreach.hpp> #include <boost/spirit/include/classic_core.hpp> -#include <boost/spirit/include/classic_actor.hpp> #include <boost/spirit/include/classic_loops.hpp> #include <boost/spirit/include/classic_symbols.hpp> #include <boost/spirit/include/classic_chset.hpp> @@ -118,16 +117,23 @@ namespace quickbook // Actions error_action error(state); - plain_char_action plain_char(state.phrase, state); - do_macro_action do_macro(state.phrase, state); + plain_char_action plain_char(state); + do_macro_action do_macro(state); scoped_parser<to_value_scoped_action> to_value(state); + member_action_value<quickbook::state, source_mode_type> change_source_mode( + state, &state::change_source_mode); + member_action_fixed_value<quickbook::state, source_mode_type> default_source_mode( + state, &state::change_source_mode, source_mode_tags::cpp); doc_info_details = - space [ph::var(local.source_mode_unset) = true] - >> *( local.doc_attribute - >> space + cl::eps_p [ph::var(local.source_mode_unset) = true] + >> *( space + >> local.doc_attribute + ) + >> !( space + >> local.doc_info_block ) - >> !local.doc_info_block + >> *eol ; local.doc_info_block = @@ -146,7 +152,7 @@ namespace quickbook ] >> space >> !(qbk_ver(106u) >> cl::eps_p(ph::var(local.source_mode_unset)) - [cl::assign_a(state.source_mode, "c++")] + [default_source_mode] ) >> ( *( ( local.doc_info_attribute | local.doc_info_escaped_attributes @@ -155,7 +161,7 @@ namespace quickbook ) ) [state.values.sort()] >> ( ']' - >> (+eol | cl::end_p) + >> (eol | cl::end_p) | cl::eps_p [error] ) ; @@ -219,12 +225,8 @@ namespace quickbook local.attribute_rules[doc_attributes::compatibility_mode] = &local.doc_compatibility_mode; - local.doc_source_mode = - ( - cl::str_p("c++") - | "python" - | "teletype" - ) [cl::assign_a(state.source_mode)] + local.doc_source_mode = source_modes + [change_source_mode] [ph::var(local.source_mode_unset) = false] ; |