1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Spirit V2.4</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_1.html" title="Spirit V2.4.1"> 10<link rel="next" href="spirit_2_3.html" title="Spirit V2.3"> 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_1.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_3.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_4"></a><a class="link" href="spirit_2_4.html" title="Spirit V2.4">Spirit V2.4</a> 28</h3></div></div></div> 29<h5> 30<a name="spirit.what_s_new.spirit_2_4.h0"></a> 31 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_3__boost_v1_43_0__to_v2_4__boost_v1_44_0_"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_3__boost_v1_43_0__to_v2_4__boost_v1_44_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.3 (Boost V1.43.0) to V2.4 (Boost V1.44.0)</a> 34 </h5> 35<h5> 36<a name="spirit.what_s_new.spirit_2_4.h1"></a> 37 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.new_features"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.new_features">New 38 Features</a> 39 </h5> 40<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> 41 The customization point <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> now takes 42 an additional template parameter <code class="computeroutput"><span class="identifier">Domain</span></code> 43 allowing to better specialize the customization point for either <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span></code> or <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">domain</span></code>. 44 </li></ul></div> 45<div class="important"><table border="0" summary="Important"> 46<tr> 47<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td> 48<th align="left">Important</th> 49</tr> 50<tr><td align="left" valign="top"><p> 51 This is a interface breaking change requiring to modify existing code. 52 If you have a specialization of this customization point in your code you 53 need to add the specialization for the new template parameter, i.e. either 54 <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span></code> or <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">domain</span></code>. 55 </p></td></tr> 56</table></div> 57<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 58<li class="listitem"> 59 Semantic actions in <span class="emphasis"><em>Spirit.Qi</em></span> now implicitly invoke 60 the function <code class="computeroutput"><span class="identifier">pre</span></code> of the 61 customization point <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> to convert 62 the supplied attribute to the exposed attribute type, as needed. The 63 functions <code class="computeroutput"><span class="identifier">post</span></code> and <code class="computeroutput"><span class="identifier">fail</span></code> of this customization point are 64 not invoked by this component (as this would not make any sense). 65 </li> 66<li class="listitem"> 67 Semantic actions in <span class="emphasis"><em>Spirit.Karma</em></span> now implicitly 68 invoke the function <code class="computeroutput"><span class="identifier">pre</span></code> 69 of the customization point <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> to convert 70 the supplied attribute to the consumed attribute type, as needed. 71 </li> 72<li class="listitem"> 73 Added the <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/omit.html" title="Generator Directives Consuming Attributes (omit[] and skip[])"><code class="computeroutput"><span class="identifier">skip</span></code></a> directive which is semantically 74 equivalent to the <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/omit.html" title="Generator Directives Consuming Attributes (omit[] and skip[])"><code class="computeroutput"><span class="identifier">omit</span></code></a> directive except that it 75 will not execute the embedded generator. 76 </li> 77<li class="listitem"> 78 Added debug support to <span class="emphasis"><em>Spirit.Karma</em></span> rules. 79 </li> 80<li class="listitem"> 81 Added strict mode to <span class="emphasis"><em>Spirit.Karma</em></span>, leaving the current 82 behavior (unchanged) as relaxed mode. Added <span class="emphasis"><em>Spirit.Karma</em></span> 83 compile time directives <code class="computeroutput"><span class="identifier">strict</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">relaxed</span><span class="special">[]</span></code> allowing to switch between the two. 84 </li> 85<li class="listitem"> 86 Added <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/duplicate.html" title="Generator Directive Duplicating Attributes (duplicate[])"><code class="computeroutput"><span class="identifier">duplicate</span></code></a> directive which duplicates 87 the supplied attribute to all elements of an embedded generator sequence. 88 </li> 89</ul></div> 90<h5> 91<a name="spirit.what_s_new.spirit_2_4.h2"></a> 92 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.bug_fixes"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.bug_fixes">Bug 93 Fixes</a> 94 </h5> 95<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 96<li class="listitem"> 97 Components in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> 98 now accept one element Fusion sequences as their attributes as long as 99 the element in the Fusion sequence is compatible with the component's 100 attribute type. 101 </li> 102<li class="listitem"> 103 The character range parser and generator components can now additionally 104 be written as <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> 105 <span class="string">"z"</span><span class="special">)</span></code> 106 instead of <code class="computeroutput"><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></code> making it consistent with the syntax 107 of the <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">)</span></code> component 108 (which can be written as <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a"</span><span class="special">)</span></code> as well). Please note that the mixed 109 syntax forms, i.e. <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="char">'a'</span><span class="special">,</span> 110 <span class="string">"z"</span><span class="special">)</span></code> 111 and <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> 112 <span class="char">'z'</span><span class="special">)</span></code>, 113 are not supported. 114 </li> 115<li class="listitem"> 116 Fixed attribute handling in <span class="emphasis"><em>Spirit.Karma</em></span> sequences 117 when all elements of that sequence consume either the same attribute 118 type or containers of that attribute type and the passed in attribute 119 is a container of that attribute type as well. In this case using a repetitive 120 container was supported only when it was the last element of the sequence. 121 Now it is possible to have a <a class="link" href="../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])"><code class="computeroutput"><span class="identifier">repeat</span></code></a><code class="computeroutput"><span class="special">(</span><span class="identifier">num</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code> 122 generator at any position (well, actually you can have any repetitive 123 container at any position now, but this doesn't always make sense as 124 it normally would eat up all supplied attribute values). 125 </li> 126<li class="listitem"> 127 Fixed debug output for variants where a variant element is an STL sequence. 128 </li> 129<li class="listitem"> 130 Fixed a problem in multi_pass, avoiding to loose a character at end of 131 input when switching iterators. 132 </li> 133</ul></div> 134<h5> 135<a name="spirit.what_s_new.spirit_2_4.h3"></a> 136 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_3__boost_v1_43_0__to_v2_4__boost_v1_44_0_"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_3__boost_v1_43_0__to_v2_4__boost_v1_44_0_">What's 137 changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.3 (Boost V1.43.0) to V2.4 138 (Boost V1.44.0)</a> 139 </h5> 140<h5> 141<a name="spirit.what_s_new.spirit_2_4.h4"></a> 142 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.new_lexer_features"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.new_lexer_features">New 143 Lexer Features</a> 144 </h5> 145<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"> 146 The lexer is now well integrated with the debug output generated by Qi's 147 simple_trace utility. Tokens are printed as: '<' matched sequence 148 '>'. 149 </li></ul></div> 150<h5> 151<a name="spirit.what_s_new.spirit_2_4.h5"></a> 152 <span class="phrase"><a name="spirit.what_s_new.spirit_2_4.lexer_bug_fixes"></a></span><a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.lexer_bug_fixes">Lexer 153 Bug Fixes</a> 154 </h5> 155<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 156<li class="listitem"> 157 Fixed a problem with using lex::_val as a rvalue in lexer semantic expressions. 158 </li> 159<li class="listitem"> 160 Token values are now available for introspection (as an iterator_range) 161 inside lexer semantic expressions as well. 162 </li> 163</ul></div> 164</div> 165<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 166<td align="left"></td> 167<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p> 168 Distributed under the Boost Software License, Version 1.0. (See accompanying 169 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>) 170 </p> 171</div></td> 172</tr></table> 173<hr> 174<div class="spirit-nav"> 175<a accesskey="p" href="spirit_2_4_1.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_3.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a> 176</div> 177</body> 178</html> 179