• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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: '&lt;' matched sequence
148            '&gt;'.
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