• 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.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">&amp;)</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;&gt;::</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