Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r84151 - in trunk/tools/quickbook: doc src test
From: dnljms_at_[hidden]
Date: 2013-05-05 09:46:39


Author: danieljames
Date: 2013-05-05 09:46:38 EDT (Sun, 05 May 2013)
New Revision: 84151
URL: http://svn.boost.org/trac/boost/changeset/84151

Log:
Only recognise preprocessor statements at the start of the line. Refs #8511.
Text files modified:
   trunk/tools/quickbook/doc/change_log.qbk | 7 +++++--
   trunk/tools/quickbook/src/syntax_highlight.cpp | 26 +++++++++++++++++---------
   trunk/tools/quickbook/test/code_cpp-1_5.gold | 1 +
   trunk/tools/quickbook/test/code_cpp-1_5.quickbook | 1 +
   4 files changed, 24 insertions(+), 11 deletions(-)

Modified: trunk/tools/quickbook/doc/change_log.qbk
==============================================================================
--- trunk/tools/quickbook/doc/change_log.qbk (original)
+++ trunk/tools/quickbook/doc/change_log.qbk 2013-05-05 09:46:38 EDT (Sun, 05 May 2013)
@@ -279,8 +279,11 @@
 
 * When code blocks are indented using a mixture of tabs and spaces,
   convert indentation to spaces.
-* Support the token pasting operator (`##`) in C++ code blocks
- ([@https://svn.boost.org/trac/boost/ticket/8510 #8510]).
+* In the C++ systax highlighter, fix syntax highlighting for `#`, so that it's
+ used for preprocessor statements at the start of a line, and as a 'special'
+ character elsewhere
+ ([@https://svn.boost.org/trac/boost/ticket/8510 #8510],
+ [@https://svn.boost.org/trac/boost/ticket/8511 #8511]).
 * Hidden options for formatting of `--output-deps`. Not really for public use
 * yet.
 * 1.6 changes:

Modified: trunk/tools/quickbook/src/syntax_highlight.cpp
==============================================================================
--- trunk/tools/quickbook/src/syntax_highlight.cpp (original)
+++ trunk/tools/quickbook/src/syntax_highlight.cpp 2013-05-05 09:46:38 EDT (Sun, 05 May 2013)
@@ -270,12 +270,21 @@
                     do_macro(self.actions, &syntax_highlight_actions::do_macro);
                 error_action error(self.actions.state);
 
- program
- =
- *( (+cl::space_p) [plain_char]
+ program =
+ *( (*cl::space_p) [plain_char]
+ >> (line_start | rest_of_line)
+ >> *rest_of_line
+ )
+ ;
+
+ line_start =
+ preprocessor [span("preprocessor")]
+ ;
+
+ rest_of_line =
+ (+cl::blank_p) [plain_char]
                     | macro
                     | escape
- | preprocessor [span("preprocessor")]
                     | cl::eps_p(ph::var(self.actions.support_callouts))
>> ( line_callout [callout]
                         | inline_callout [callout]
@@ -287,8 +296,8 @@
                     | string_ [span("string")]
                     | char_ [span("char")]
                     | number [span("number")]
- | u8_codepoint_p [unexpected_char]
- )
+ | ~cl::eps_p(cl::eol_p)
+ >> u8_codepoint_p [unexpected_char]
                     ;
 
                 macro =
@@ -359,8 +368,7 @@
                     ; // make sure we recognize whole words only
 
                 special
- = +cl::chset_p("~!%^&*()+={[}]:;,<.>?/|\\-") |
- "##"
+ = +cl::chset_p("~!%^&*()+={[}]:;,<.>?/|\\#-")
                     ;
 
                 string_char = ('\\' >> u8_codepoint_p) | (cl::anychar_p - '\\');
@@ -388,7 +396,7 @@
             }
 
             cl::rule<Scanner>
- program, macro, preprocessor,
+ program, line_start, rest_of_line, macro, preprocessor,
                             inline_callout, line_callout, comment,
                             special, string_,
                             char_, number, identifier, keyword, escape,

Modified: trunk/tools/quickbook/test/code_cpp-1_5.gold
==============================================================================
--- trunk/tools/quickbook/test/code_cpp-1_5.gold (original)
+++ trunk/tools/quickbook/test/code_cpp-1_5.gold 2013-05-05 09:46:38 EDT (Sun, 05 May 2013)
@@ -6,6 +6,7 @@
 <programlisting><phrase role="preprocessor">#include</phrase> <phrase role="special">&lt;</phrase><phrase role="identifier">some_header</phrase><phrase role="special">&gt;</phrase>
     <phrase role="preprocessor">#include</phrase> <phrase role="string">&quot;another_header.hpp&quot;</phrase>
 <phrase role="preprocessor"># define</phrase> <phrase role="identifier">A_MACRO</phrase> <phrase role="identifier">value</phrase>
+<phrase role="preprocessor">#define</phrase> <phrase role="identifier">stringize</phrase><phrase role="special">(</phrase><phrase role="identifier">hello</phrase><phrase role="special">)</phrase> <phrase role="special">#</phrase><phrase role="identifier">hello</phrase>
 <phrase role="comment">// No escape</phrase>
 <phrase role="comment">/* No escape */</phrase>
 <phrase role="comment">/* No escape

Modified: trunk/tools/quickbook/test/code_cpp-1_5.quickbook
==============================================================================
--- trunk/tools/quickbook/test/code_cpp-1_5.quickbook (original)
+++ trunk/tools/quickbook/test/code_cpp-1_5.quickbook 2013-05-05 09:46:38 EDT (Sun, 05 May 2013)
@@ -5,6 +5,7 @@
     #include <some_header>
         #include "another_header.hpp"
     # define A_MACRO value
+ #define stringize(hello) #hello
     // No escape
     /* No escape */
     /* No escape


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk