12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>Regular Expression Parser</title>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <link href="theme/style.css" rel="stylesheet" type="text/css">
- </head>
- <body>
- <table width="100%" border="0" background="theme/bkd2.gif" cellspacing="2">
- <tr>
- <td width="10" height="49"> <font size="6" face="Verdana, Arial, Helvetica, sans-serif"><b> </b></font></td>
- <td width="85%" height="49"> <font size="6" face="Verdana, Arial, Helvetica, sans-serif"><b>Regular Expression Parser</b></font></td>
- <td width="112" height="49"><a href="http://spirit.sf.net"><img src="theme/spirit.gif" width="112" height="48" align="right" border="0"></a></td>
- </tr>
- </table>
- <br>
- <table border="0">
- <tr>
- <td width="10"></td>
- <td width="30"><a href="../index.html"><img src="theme/u_arr.gif" border="0"></a></td>
- <td width="30"><a href="refactoring.html"><img src="theme/l_arr.gif" width="20" height="19" border="0"></a></td>
- <td width="30"><a href="scoped_lock.html"><img src="theme/r_arr.gif" border="0"></a></td>
- </tr>
- </table>
- <p><a name="regular_expression_parser"></a>Regular expressions are a form of pattern-matching
- that are often used in text processing. Many users will be familiar with the
- usage of regular expressions. Initially there were the Unix utilities grep,
- sed and awk, and the programming language perl, each of which make extensive
- use of regular expressions. Today the usage of such regular expressions is integrated
- in many more available systems.</p>
- <p>During parser construction it is often useful to have the power of regular
- expressions available. The Regular Expression Parser was introduced, to make
- the use of regular expressions accessible for Spirit parser construction.</p>
- <p>The Regular Expression Parser <tt>rxstrlit</tt> has a single template type
- parameter: an iterator type. Internally, <tt>rxstrlit</tt> holds the Boost Regex
- object containing the provided regular expression. The <tt>rxstrlit</tt> attempts
- to match the current input stream with this regular expression. The template
- type parameter defaults to <tt>char const<span class="operators">*</span></tt>.
- <tt>rxstrlit</tt> has two constructors. The first accepts a null-terminated
- character pointer. This constructor may be used to build <tt>rxstrlit's</tt>
- from quoted regular expression literals. The second constructor takes in a first/last
- iterator pair. The function generator version is <tt>regex_p</tt>. </p>
- <p>Here are some examples:</p>
- <pre><code><span class=comment> </span><span class=identifier>rxstrlit</span><span class=special><>(</span><span class=string>"Hello[[:space:]]+[W|w]orld"</span><span class=special>)
- </span><span class=identifier>regex_p</span><span class=special>(</span><span class=string>"Hello[[:space:]]+[W|w]orld"</span><span class=special>)
- </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=identifier>msg</span><span class=special>(</span><span class=string>"Hello[[:space:]]+[W|w]orld"</span><span class=special>);
- rx</span><span class=identifier>strlit</span><span class=special><>(</span><span class=identifier>msg</span><span class=special>.</span><span class=identifier>begin</span><span class=special>(), </span><span class=identifier>msg</span><span class=special>.</span><span class=identifier>end</span><span class=special>());</span></code></pre>
- <p>The generated parser object acts at the character level, thus an eventually
- given skip parser is not used during the attempt to match the regular expression
- (see <a href="faq.html#scanner_business">The Scanner Business</a>).</p>
- <p>The Regular Expression Parser is implemented by the help of the <a href="http://www.boost.org/libs/regex/index.html">Boost
- Regex++ library</a>, so you have to have some limitations in mind. </p>
- <blockquote>
- <p><img src="theme/bullet.gif" width="12" height="12"> Boost libraries have
- to be installed on your computer and the Boost root directory has to be added
- to your compiler <tt>#include<...></tt> search path. You can download
- the actual version at the <a href="http://www.boost.org/">Boost web site</a>.</p>
- <p><img src="theme/bullet.gif" width="12" height="12"> The Boost Regex library
- requires the usage of bi-directional iterators. So you have to ensure this
- during the usage of the Spirit parser, which contains a Regular Expression
- Parser.</p>
- <p><img src="theme/bullet.gif" width="12" height="12"> The Boost Regex library
- is not a header only library, as Spirit is, though it provides the possibility
- to include all of the sources, if you are using it in one compilation unit
- only. Define the preprocessor constant <tt>BOOST_SPIRIT_NO_REGEX_LIB</tt> before
- including the spirit Regular Expression Parser header, if you want to include
- all the Boost Regex sources into this compilation unit. If you are using the
- Regular Expression Parser in more than one compilation unit, you should not
- define this constant and must link your application against the regex library
- as described in the related documentation.</p>
- </blockquote>
- <p> <img src="theme/lens.gif" width="15" height="16"> See <a href="../example/fundamental/regular_expression.cpp">regular_expression.cpp</a> for a compilable example. This is part of the Spirit distribution.</p>
- <table border="0">
- <tr>
- <td width="10"></td>
- <td width="30"><a href="../index.html"><img src="theme/u_arr.gif" border="0"></a></td>
- <td width="30"><a href="refactoring.html"><img src="theme/l_arr.gif" width="20" height="19" border="0"></a></td>
- <td width="30"><a href="scoped_lock.html"><img src="theme/r_arr.gif" border="0"></a></td>
- </tr>
- </table>
- <br>
- <hr size="1">
- <p class="copyright">Copyright © 2001-2002 Hartmut Kaiser<br>
- <br>
- <font size="2">Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)</font></p>
- </body>
- </html>
|