<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <title>Spirit V2.4</title> <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.0"> <link rel="home" href="../../index.html" title="Spirit 2.4"> <link rel="up" href="../what_s_new.html" title="What's New"> <link rel="prev" href="../what_s_new.html" title="What's New"> <link rel="next" href="spirit_2_3.html" title="Spirit V2.3"> </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"><a href="../../../../../../index.html">Home</a></td> <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td> <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> <td align="center"><a href="../../../../../../more/index.htm">More</a></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="../what_s_new.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> </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> <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> </h3></div></div></div> <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><h5> <a name="id821020"></a> <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 changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> from V2.3 (Boost V1.43.0) to V2.4 (Boost V1.44.0)</a> </h5> <a name="spirit.what_s_new.spirit_2_4.new_features"></a><h5> <a name="id821042"></a> <a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.new_features">New Features</a> </h5> <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> 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">transform_attribute</span></code></a> now takes an additional template parameter <code class="computeroutput"><span class="identifier">Domain</span></code> 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>. </li></ul></div> <div class="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> This is a interface breaking change requiring to modify exising code. If you have a specialization of this customization point in your code you need to add the specialization for the new template parameter, i.e. 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>. </p></td></tr> </table></div> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> Semantic actions in <span class="emphasis"><em>Spirit.Qi</em></span> now implicitly invoke the function <code class="computeroutput"><span class="identifier">pre</span></code> 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">transform_attribute</span></code></a> to convert the supplied attribute to the exposed attribute type, as needed. The 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 not invoked by this component (as this would not make any sense). </li> <li class="listitem"> Semantic actions in <span class="emphasis"><em>Spirit.Karma</em></span> now implicitly invoke the function <code class="computeroutput"><span class="identifier">pre</span></code> 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">transform_attribute</span></code></a> to convert the supplied attribute to the consumend attribute type, as needed. </li> <li class="listitem"> Added the <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/omit.html" title="Consume Attribute (omit[] and skip[])"><code class="computeroutput"><span class="identifier">skip</span></code></a> directive which is semantically equivalent to the <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/omit.html" title="Consume Attribute (omit[] and skip[])"><code class="computeroutput"><span class="identifier">omit</span></code></a> directive except that it will not execute the embedded generator. </li> <li class="listitem"> Added debug support to <span class="emphasis"><em>Spirit.Karma</em></span> rules. </li> <li class="listitem"> Added strict mode to <span class="emphasis"><em>Spirit.Karma</em></span>, leaving the current behavior (unchanged) as relaxed mode. Added <span class="emphasis"><em>Spirit.Karma</em></span> 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. </li> <li class="listitem"> Added <span class="emphasis"><em>Spirit.Karma</em></span> <a class="link" href="../karma/reference/directive/duplicate.html" title="Duplicate Attribute (duplicate[])"><code class="computeroutput"><span class="identifier">duplicate</span></code></a> directive which duplicates the supplied attribute to all elements of an embedded generator sequence. </li> </ul></div> <a name="spirit.what_s_new.spirit_2_4.bug_fixes"></a><h5> <a name="id821324"></a> <a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.bug_fixes">Bug Fixes</a> </h5> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> Components in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> now accept one element Fusion sequences as their attributes as long as the element in the Fusion sequence is compatible with the component's attribute type. </li> <li class="listitem"> The character range parser and generator components can now additionally be written as <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="string">"z"</span><span class="special">)</span></code> 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 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 (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 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> <span class="string">"z"</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">char_</span><span class="special">(</span><span class="string">"a"</span><span class="special">,</span> <span class="char">'z'</span><span class="special">)</span></code>, are not supported. </li> <li class="listitem"> Fixed attribute handling in <span class="emphasis"><em>Spirit.Karma</em></span> sequences when all elements of that sequence consume either the same attribute type or containers of that attribute type and the passed in attribute is a container of that attribute type as well. In this case using a repetitive container was supported only when it was the last element of the sequence. Now it is possible to have a <a class="link" href="../karma/reference/directive/repeat.html" title="Repetition 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> generator at any position (well, actually you can have any repetitive container at any position now, but this doesn't always make sense as it normally would eat up all supplied attribute values). </li> <li class="listitem"> Fixed debug output for variants where a variant element is an STL sequence. </li> <li class="listitem"> Fixed a problem in multi_pass, avoiding to loose a character at end of input when switching iterators. </li> </ul></div> <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><h5> <a name="id826476"></a> <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 changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.3 (Boost V1.43.0) to V2.4 (Boost V1.44.0)</a> </h5> <a name="spirit.what_s_new.spirit_2_4.new_lexer_features"></a><h5> <a name="id826494"></a> <a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.new_lexer_features">New Lexer Features</a> </h5> <div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"> The lexer is now well integrated with the debug output generated by Qi's simple_trace utility. Tokens are printed as: '<' matched sequence '>'. </li></ul></div> <a name="spirit.what_s_new.spirit_2_4.lexer_bug_fixes"></a><h5> <a name="id826518"></a> <a class="link" href="spirit_2_4.html#spirit.what_s_new.spirit_2_4.lexer_bug_fixes">Lexer Bug Fixes</a> </h5> <div class="itemizedlist"><ul class="itemizedlist" type="disc"> <li class="listitem"> Fixed a problem with using lex::_val as a rvalue in lexer semantic expressions. </li> <li class="listitem"> Token values are now available for introspection (as an iterator_range) inside lexer semantic expressions as well. </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-2010 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 <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) </p> </div></td> </tr></table> <hr> <div class="spirit-nav"> <a accesskey="p" href="../what_s_new.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> </div> </body> </html>