1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Spirit V2.3</title> 5<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../index.html" title="Spirit 2.5.8"> 8<link rel="up" href="../what_s_new.html" title="What's New"> 9<link rel="prev" href="spirit_2_4.html" title="Spirit V2.4"> 10<link rel="next" href="spirit_2_2.html" title="Spirit V2.2"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="spirit_2_4.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../what_s_new.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spirit_2_2.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h3 class="title"> 27<a name="spirit.what_s_new.spirit_2_3"></a><a class="link" href="spirit_2_3.html" title="Spirit V2.3">Spirit V2.3</a> 28</h3></div></div></div> 29<h5> 30<a name="spirit.what_s_new.spirit_2_3.h0"></a> 31 <span class="phrase"><a name="spirit.what_s_new.spirit_2_3.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_2__boost_v1_42_0__to_v2_3__boost_v1_43_0_"></a></span><a class="link" href="spirit_2_3.html#spirit.what_s_new.spirit_2_3.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_2__boost_v1_42_0__to_v2_3__boost_v1_43_0_">What's 32 changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> 33 from V2.2 (Boost V1.42.0) to V2.3 (Boost V1.43.0)</a> 34 </h5> 35<h5> 36<a name="spirit.what_s_new.spirit_2_3.h1"></a> 37 <span class="phrase"><a name="spirit.what_s_new.spirit_2_3.new_features"></a></span><a class="link" href="spirit_2_3.html#spirit.what_s_new.spirit_2_3.new_features">New 38 Features</a> 39 </h5> 40<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 41<li class="listitem"> 42 The customization point <code class="computeroutput"><span class="identifier">transform_attribute</span></code> 43 now has to implement a third function: <code class="computeroutput"><span class="keyword">void</span> 44 <span class="identifier">fail</span><span class="special">(</span><span class="identifier">Exposed</span><span class="special">&)</span></code>, 45 which normally will do nothing. This function will be called whenever 46 the right hand side of the <code class="computeroutput"><span class="identifier">rule</span></code> 47 (or the embedded parser of <code class="computeroutput"><span class="identifier">attr_cast</span></code>) 48 fail parsing. This change affects <span class="emphasis"><em>Qi</em></span> only. See the 49 description of the <a class="link" href="../advanced/customize/transform.html" title="Transform an Attribute to a Different Type (Qi and Karma)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">transform_attribute</span></code></a> for more 50 details. 51 </li> 52<li class="listitem"> 53 Added support for attribute sequences created with <code class="computeroutput"><span class="identifier">BOOST_FUSION_ADAPT_CLASS</span></code> 54 and <code class="computeroutput"><span class="identifier">BOOST_FUSION_ADAPT_CLASS_NAMED</span></code>. 55 This support requires to include the new header file: <code class="computeroutput"><span class="preprocessor">#include</span> 56 <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">support_adapt_class_attributes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>. 57 </li> 58<li class="listitem"> 59 Added <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">ostream_iterator</span></code> as a counterpart to 60 <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">istream_iterator</span></code> (see new header file: 61 <code class="computeroutput"><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">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">iterators</span><span class="special">/</span><span class="identifier">ostream_iterator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>). 62 </li> 63<li class="listitem"> 64 Added <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">hold</span></code> allowing to make sure the embedded 65 parser does not touch the passed attribute in case it fails parsing. 66 </li> 67<li class="listitem"> 68 Added <a class="link" href="../qi/reference/directive/no_skip.html" title="Parser Directive Inhibiting Skipping Without Pre-skip (no_skip[])"><code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">no_skip</span></code></a> directive, which is 69 equivalent to <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span></code><a class="link" href="../qi/reference/directive/lexeme.html" title="Parser Directive Inhibiting Skipping (lexeme[])"><code class="computeroutput"><span class="identifier">lexeme</span></code></a>, 70 except that it does not pre-skip. 71 </li> 72<li class="listitem"> 73 Added <a class="link" href="../karma/reference/directive/delimit.html" title="Generator Directives Controlling Automatic Delimiting (verbatim[], no_delimit[], delimit[])"><code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">no_delimit</span></code></a> directive, which 74 is equivalent to <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span></code><a class="link" href="../karma/reference/directive/delimit.html" title="Generator Directives Controlling Automatic Delimiting (verbatim[], no_delimit[], delimit[])"><code class="computeroutput"><span class="identifier">verbatim</span></code></a>, except that it does 75 not perform a post-delimiting step. 76 </li> 77<li class="listitem"> 78 Added a new input_iterator policy for the <code class="computeroutput"><span class="identifier">multi_pass</span></code> 79 iterator framework (named <code class="computeroutput"><span class="identifier">buffering_input_iterator</span></code>) 80 allowing to wrap underlying input iterators which do not store the last 81 character read from the input (such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span></code>). 82 This is now used as the default input policy. 83 </li> 84</ul></div> 85<h5> 86<a name="spirit.what_s_new.spirit_2_3.h2"></a> 87 <span class="phrase"><a name="spirit.what_s_new.spirit_2_3.bug_fixes"></a></span><a class="link" href="spirit_2_3.html#spirit.what_s_new.spirit_2_3.bug_fixes">Bug 88 Fixes</a> 89 </h5> 90<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 91<li class="listitem"> 92 Sequences (in <span class="emphasis"><em>Qi</em></span> and <span class="emphasis"><em>Karma</em></span>) 93 may now have a component having no attribute even as their last element. 94 </li> 95<li class="listitem"> 96 Sequences (in <span class="emphasis"><em>Qi</em></span> and <span class="emphasis"><em>Karma</em></span>) 97 can now take one element attribute sequences as their attribute. 98 </li> 99<li class="listitem"> 100 Constructs like <code class="computeroutput"><span class="identifier">karma</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">buffer</span><span class="special">[...]]</span></code> don't result in performing double 101 buffering anymore. The same is true if an alternative is wrapped into 102 a <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">buffer</span><span class="special">[]</span></code> 103 directive (as for instance: <code class="computeroutput"><span class="identifier">buffer</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span> <span class="special">|</span> <span class="identifier">b</span></code>). 104 </li> 105<li class="listitem"> 106 The <span class="emphasis"><em>Spirit.Karma</em></span> output iterator (which is used 107 internally, but also is exposed when using the stream based API) is now 108 properly copyable (thanks to Jonas Persson for reporting this issue). 109 </li> 110<li class="listitem"> 111 The default <code class="computeroutput"><span class="identifier">multi_pass</span></code> 112 iterator is now usable with underlying input iterators which do not store 113 the last character read from the input (such as <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span></code>). 114 Thanks to Larry Evans and Peter Schueller for independently reporting 115 this problem. 116 </li> 117<li class="listitem"> 118 The directive <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">omit</span><span class="special">[]</span></code> 119 now does not accept an arbitrary attribute type anymore. 120 </li> 121<li class="listitem"> 122 The <span class="emphasis"><em>Spirit.Karma</em></span> predicates (the and-predicate and 123 the not-predicate) and the directive <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">omit</span><span class="special">[]</span></code> now disable output altogether instead 124 of intercepting the output into a buffer which got discarded as before. 125 </li> 126<li class="listitem"> 127 Fixed <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">rule</span></code> to properly handles optional attributes. 128 </li> 129</ul></div> 130<h5> 131<a name="spirit.what_s_new.spirit_2_3.h3"></a> 132 <span class="phrase"><a name="spirit.what_s_new.spirit_2_3.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_2__boost_v1_42_0__to_v2_3__boost_v1_43_0_"></a></span><a class="link" href="spirit_2_3.html#spirit.what_s_new.spirit_2_3.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_2__boost_v1_42_0__to_v2_3__boost_v1_43_0_">What's 133 changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.2 (Boost V1.42.0) to V2.3 134 (Boost V1.43.0)</a> 135 </h5> 136<h5> 137<a name="spirit.what_s_new.spirit_2_3.h4"></a> 138 <span class="phrase"><a name="spirit.what_s_new.spirit_2_3.new_lexer_features"></a></span><a class="link" href="spirit_2_3.html#spirit.what_s_new.spirit_2_3.new_lexer_features">New 139 Lexer Features</a> 140 </h5> 141<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 142<li class="listitem"> 143 The library does not minimize the generated lexer tables for dynamic 144 lexers by default anymore. The generated tables will now be minimized 145 for static lexers only. 146 </li> 147<li class="listitem"> 148 The function <code class="computeroutput"><span class="identifier">lexer</span><span class="special"><>::</span><span class="identifier">init_dfa</span><span class="special">()</span></code> 149 now takes a single boolean parameter (which defaults to <code class="computeroutput"><span class="keyword">false</span></code>) allowing to force minimization 150 of the generated lexer tables. 151 </li> 152</ul></div> 153</div> 154<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 155<td align="left"></td> 156<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p> 157 Distributed under the Boost Software License, Version 1.0. (See accompanying 158 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 159 </p> 160</div></td> 161</tr></table> 162<hr> 163<div class="spirit-nav"> 164<a accesskey="p" href="spirit_2_4.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../what_s_new.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="spirit_2_2.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 165</div> 166</body> 167</html> 168