Imported Upstream version 1.57.0
[platform/upstream/boost.git] / libs / spirit / doc / html / spirit / qi / reference / directive / repeat.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Repetition Parser Directive (repeat[])</title>
5 <link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="../../../../index.html" title="Spirit 2.5.2">
8 <link rel="up" href="../directive.html" title="Parser Directives">
9 <link rel="prev" href="raw.html" title="Directive for Transduction Parsing (raw[])">
10 <link rel="next" href="matches.html" title="Directive Testing if Parser Succeeded (matches[])">
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="raw.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.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="matches.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h5 class="title">
27 <a name="spirit.qi.reference.directive.repeat"></a><a class="link" href="repeat.html" title="Repetition Parser Directive (repeat[])">Repetition
28           Parser Directive (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a>
29 </h5></div></div></div>
30 <h6>
31 <a name="spirit.qi.reference.directive.repeat.h0"></a>
32             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.description"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.description">Description</a>
33           </h6>
34 <p>
35             The <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>
36             provides a more powerful and flexible mechanism for repeating a parser.
37             There are grammars that are impractical and cumbersome, if not impossible,
38             for the basic EBNF iteration syntax (<a class="link" href="../operator/kleene.html" title="Kleene Parser (*a)">Kleene</a>
39             and the <a class="link" href="../operator/plus.html" title="Plus Parser (+a)">Plus</a>)
40             to specify. Examples:
41           </p>
42 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
43 <li class="listitem">
44                 A file name may have a maximum of 255 characters only.
45               </li>
46 <li class="listitem">
47                 A specific bitmap file format has exactly 4096 RGB color information.
48               </li>
49 <li class="listitem">
50                 A 256 bit binary string (1..256 1s or 0s).
51               </li>
52 </ul></div>
53 <h6>
54 <a name="spirit.qi.reference.directive.repeat.h1"></a>
55             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.header"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.header">Header</a>
56           </h6>
57 <pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/directive/repeat.hpp&gt;</span>
58 <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">include</span><span class="special">/</span><span class="identifier">qi_repeat</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
59 </pre>
60 <p>
61             Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
62           </p>
63 <h6>
64 <a name="spirit.qi.reference.directive.repeat.h2"></a>
65             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.namespace"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.namespace">Namespace</a>
66           </h6>
67 <div class="informaltable"><table class="table">
68 <colgroup><col></colgroup>
69 <thead><tr><th>
70                     <p>
71                       Name
72                     </p>
73                   </th></tr></thead>
74 <tbody>
75 <tr><td>
76                     <p>
77                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">repeat</span> <span class="comment">//
78                       alias: boost::spirit::qi::repeat</span></code>
79                     </p>
80                   </td></tr>
81 <tr><td>
82                     <p>
83                       <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">inf</span> <span class="comment">// alias:
84                       boost::spirit::qi::inf</span></code>
85                     </p>
86                   </td></tr>
87 </tbody>
88 </table></div>
89 <h6>
90 <a name="spirit.qi.reference.directive.repeat.h3"></a>
91             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.model_of"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.model_of">Model
92             of</a>
93           </h6>
94 <div class="blockquote"><blockquote class="blockquote"><p>
95               <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>
96             </p></blockquote></div>
97 <div class="variablelist">
98 <p class="title"><b>Notation</b></p>
99 <dl class="variablelist">
100 <dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
101 <dd><p>
102                   A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
103                 </p></dd>
104 <dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code>, <code class="computeroutput"><span class="identifier">min</span></code>, <code class="computeroutput"><span class="identifier">max</span></code></span></dt>
105 <dd><p>
106                   An <code class="computeroutput"><span class="keyword">int</span></code> anything that
107                   can be converted to an <code class="computeroutput"><span class="keyword">int</span></code>,
108                   or a <a class="link" href="../basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
109                   Argument</a> that evaluates to anything that can be converted
110                   to an <code class="computeroutput"><span class="keyword">int</span></code>.
111                 </p></dd>
112 </dl>
113 </div>
114 <h6>
115 <a name="spirit.qi.reference.directive.repeat.h4"></a>
116             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.expression_semantics"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.expression_semantics">Expression
117             Semantics</a>
118           </h6>
119 <p>
120             Semantics of an expression is defined only where it differs from, or
121             is not defined in <a class="link" href="../parser_concepts/unaryparser.html" title="UnaryParser"><code class="computeroutput"><span class="identifier">UnaryParser</span></code></a>.
122           </p>
123 <div class="informaltable"><table class="table">
124 <colgroup>
125 <col>
126 <col>
127 </colgroup>
128 <thead><tr>
129 <th>
130                     <p>
131                       Expression
132                     </p>
133                   </th>
134 <th>
135                     <p>
136                       Semantics
137                     </p>
138                   </th>
139 </tr></thead>
140 <tbody>
141 <tr>
142 <td>
143                     <p>
144                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
145                     </p>
146                   </td>
147 <td>
148                     <p>
149                       Repeat <code class="computeroutput"><span class="identifier">a</span></code> zero
150                       or more times. Same as <a class="link" href="../operator/kleene.html" title="Kleene Parser (*a)">Kleene</a>.
151                     </p>
152                   </td>
153 </tr>
154 <tr>
155 <td>
156                     <p>
157                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
158                     </p>
159                   </td>
160 <td>
161                     <p>
162                       Repeat <code class="computeroutput"><span class="identifier">a</span></code> exactly
163                       <code class="computeroutput"><span class="identifier">n</span></code> times.
164                     </p>
165                   </td>
166 </tr>
167 <tr>
168 <td>
169                     <p>
170                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
171                       <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
172                     </p>
173                   </td>
174 <td>
175                     <p>
176                       Repeat <code class="computeroutput"><span class="identifier">a</span></code> at
177                       least <code class="computeroutput"><span class="identifier">min</span></code> times
178                       and at most <code class="computeroutput"><span class="identifier">max</span></code>
179                       times.
180                     </p>
181                   </td>
182 </tr>
183 <tr>
184 <td>
185                     <p>
186                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
187                       <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
188                     </p>
189                   </td>
190 <td>
191                     <p>
192                       Repeat <code class="computeroutput"><span class="identifier">a</span></code> at
193                       least <code class="computeroutput"><span class="identifier">min</span></code> or
194                       more (continuing until <code class="computeroutput"><span class="identifier">a</span></code>
195                       fails or the input is consumed).
196                     </p>
197                   </td>
198 </tr>
199 </tbody>
200 </table></div>
201 <h6>
202 <a name="spirit.qi.reference.directive.repeat.h5"></a>
203             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.attributes"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.attributes">Attributes</a>
204           </h6>
205 <p>
206             See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
207             Attribute Notation</a>.
208           </p>
209 <div class="informaltable"><table class="table">
210 <colgroup>
211 <col>
212 <col>
213 </colgroup>
214 <thead><tr>
215 <th>
216                     <p>
217                       Expression
218                     </p>
219                   </th>
220 <th>
221                     <p>
222                       Attribute
223                     </p>
224                   </th>
225 </tr></thead>
226 <tbody>
227 <tr>
228 <td>
229                     <p>
230                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
231                     </p>
232                   </td>
233 <td>
234                     <p>
235 </p>
236 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
237 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
238 <p>
239                     </p>
240                   </td>
241 </tr>
242 <tr>
243 <td>
244                     <p>
245                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
246                     </p>
247                   </td>
248 <td>
249                     <p>
250 </p>
251 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
252 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">n</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
253 <p>
254                     </p>
255                   </td>
256 </tr>
257 <tr>
258 <td>
259                     <p>
260                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
261                       <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
262                     </p>
263                   </td>
264 <td>
265                     <p>
266 </p>
267 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
268 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">max</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
269 <p>
270                     </p>
271                   </td>
272 </tr>
273 <tr>
274 <td>
275                     <p>
276                       <code class="computeroutput"><span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span>
277                       <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]</span></code>
278                     </p>
279                   </td>
280 <td>
281                     <p>
282 </p>
283 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
284 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">min</span><span class="special">,</span> <span class="identifier">inf</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
285 <p>
286                     </p>
287                   </td>
288 </tr>
289 </tbody>
290 </table></div>
291 <h6>
292 <a name="spirit.qi.reference.directive.repeat.h6"></a>
293             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.complexity"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.complexity">Complexity</a>
294           </h6>
295 <div class="blockquote"><blockquote class="blockquote"><p>
296               The overall complexity is defined by the complexity of its subject
297               parser. The complexity of <code class="computeroutput"><span class="identifier">repeat</span></code>
298               itself is O(N), where N is the number of repetitions to execute.
299             </p></blockquote></div>
300 <h6>
301 <a name="spirit.qi.reference.directive.repeat.h7"></a>
302             <span class="phrase"><a name="spirit.qi.reference.directive.repeat.example"></a></span><a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.example">Example</a>
303           </h6>
304 <div class="note"><table border="0" summary="Note">
305 <tr>
306 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
307 <th align="left">Note</th>
308 </tr>
309 <tr><td align="left" valign="top"><p>
310               The test harness for the example(s) below is presented in the <a class="link" href="../basics.html#spirit.qi.reference.basics.examples">Basics Examples</a>
311               section.
312             </p></td></tr>
313 </table></div>
314 <p>
315             Using the repeat directive, we can now write our examples above.
316           </p>
317 <p>
318             Some using declarations:
319           </p>
320 <p>
321 </p>
322 <pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">repeat</span><span class="special">;</span>
323 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
324 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">uint_parser</span><span class="special">;</span>
325 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">_1</span><span class="special">;</span>
326 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span><span class="special">;</span>
327 <span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
328 </pre>
329 <p>
330           </p>
331 <p>
332             A parser for a file name with a maximum of 255 characters:
333           </p>
334 <p>
335 </p>
336 <pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"batman.jpeg"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">255</span><span class="special">)[</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"a-zA-Z_./"</span><span class="special">)]);</span>
337 </pre>
338 <p>
339           </p>
340 <p>
341             A parser for a specific bitmap file format which has exactly 4096 RGB
342             color information. (for the purpose of this example, we will be testing
343             only 3 RGB color information.)
344           </p>
345 <p>
346 </p>
347 <pre class="programlisting"><span class="identifier">uint_parser</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">,</span> <span class="number">16</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span> <span class="number">6</span><span class="special">&gt;</span> <span class="identifier">rgb</span><span class="special">;</span>
348 <span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">unsigned</span><span class="special">&gt;</span> <span class="identifier">colors</span><span class="special">;</span>
349 <span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"ffffff0000003f3f3f"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">3</span><span class="special">)[</span><span class="identifier">rgb</span><span class="special">],</span> <span class="identifier">colors</span><span class="special">);</span>
350 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
351     <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span>
352     <span class="special">&lt;&lt;</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">0</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
353     <span class="special">&lt;&lt;</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">1</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">','</span>
354     <span class="special">&lt;&lt;</span> <span class="identifier">colors</span><span class="special">[</span><span class="number">2</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
355 </pre>
356 <p>
357           </p>
358 <p>
359             A 256 bit binary string (1..256 1s or 0s). (For the purpose of this example,
360             we will be testing only 16 bits.)
361           </p>
362 <p>
363 </p>
364 <pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"1011101011110010"</span><span class="special">,</span> <span class="identifier">repeat</span><span class="special">(</span><span class="number">16</span><span class="special">)[</span><span class="identifier">lit</span><span class="special">(</span><span class="char">'1'</span><span class="special">)</span> <span class="special">|</span> <span class="char">'0'</span><span class="special">]);</span>
365 </pre>
366 <p>
367           </p>
368 <p>
369             The Loop parsers can be dynamic. Consider the parsing of a binary file
370             of Pascal-style length prefixed string, where the first byte determines
371             the length of the incoming string. Here's a sample input:
372           </p>
373 <div class="blockquote"><blockquote class="blockquote"><p>
374               <span class="inlinemediaobject"><img src="../../../.././images/pascal_string.png" alt="pascal_string"></span>
375             </p></blockquote></div>
376 <p>
377             This trivial example cannot be practically defined in traditional EBNF.
378             Although some EBNF variants allow more powerful repetition constructs
379             other than the Kleene Star, we are still limited to parsing fixed strings.
380             The nature of EBNF forces the repetition factor to be a constant. On
381             the other hand, Spirit allows the repetition factor to be variable at
382             run time. We could write a grammar that accepts the input string above.
383             Example using phoenix:
384           </p>
385 <p>
386 </p>
387 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
388 <span class="keyword">int</span> <span class="identifier">n</span><span class="special">;</span>
389 <span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"\x0bHello World"</span><span class="special">,</span>
390     <span class="identifier">char_</span><span class="special">[</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">_1</span><span class="special">]</span> <span class="special">&gt;&gt;</span> <span class="identifier">repeat</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">n</span><span class="special">))[</span><span class="identifier">char_</span><span class="special">],</span> <span class="identifier">str</span><span class="special">);</span>
391 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">n</span> <span class="special">&lt;&lt;</span> <span class="char">','</span> <span class="special">&lt;&lt;</span> <span class="identifier">str</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>  <span class="comment">// will print "11,Hello World"</span>
392 </pre>
393 <p>
394           </p>
395 </div>
396 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
397 <td align="left"></td>
398 <td align="right"><div class="copyright-footer">Copyright &#169; 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
399         Distributed under the Boost Software License, Version 1.0. (See accompanying
400         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>)
401       </p>
402 </div></td>
403 </tr></table>
404 <hr>
405 <div class="spirit-nav">
406 <a accesskey="p" href="raw.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../directive.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="matches.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
407 </div>
408 </body>
409 </html>