12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>Escape Character 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>Escape Character 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="switch_parser.html"><img src="theme/l_arr.gif" width="20" height="19" border="0"></a></td>
- <td width="30"><a href="loops.html"><img src="theme/r_arr.gif" border="0"></a></td>
- </tr>
- </table>
- <p><a name="escape_char_parser"></a>The Escape Character Parser is a utility
- parser, which parses escaped character sequences used in C/C++,
- LEX or Perl regular expressions. Combined with the confix_p utility parser, it is useful for parsing C/C++ strings containing double quotes and other escaped
- characters:</p>
- <pre> confix_p<span class="special">(</span><em class="literal">'"'</em><span class="special">,</span> <span class="special">*</span>c_escape_ch_p<span class="special">,</span> <em><span class="literal">'"</span></em><span class="literal"><em>'</em></span><span class="special">)</span></pre>
- <p>There are two different types of the Escape Character Parser:
- <tt>c_escape_ch_p</tt>, which parses C/C++ escaped character sequences and
- <tt>lex_escape_ch_p</tt>, which parses LEX style escaped character sequences.
- The following table shows the valid character sequences understood by these
- utility parsers.</p>
- <table width="90%" border="0" align="center">
- <tr>
- <td colspan="2" class="table_title"><b>Summary of valid escaped character
- sequences</b></td>
- </tr>
- <tr>
- <td width="29%" height="27" class="table_cells"><b>c_escape_ch_p</b></td>
- <td width="71%" class="table_cells"><p><code>\b, \t, \n, \f, \r, \\, \",
- \', \xHH, \OOO</code><br>
- where: H is some hexadecimal digit (0..9, a..f, A..F) and O is some octal
- digit (0..7)</p></td>
- </tr>
- <tr>
- <td height="27" class="table_cells"><strong>lex_escape_ch_p</strong></td>
- <td class="table_cells">
- <p>all C/C++ escaped character sequences as described above and additionally
- any other character, which follows a backslash</p>
- </td>
- </tr>
- </table>
- <p>If there is a semantic action attached directly to the Escape Character Parser,
- all valid escaped characters are converted to their character equivalent
- (i.e. a backslash followed by a 'r' is converted to '\r'), which is
- fed to the attached actor. The number of hexadecimal
- or octal digits parsed depends on the size of one input character. An
- overflow will be detected and will generate a non-match. lex_escape_ch_p
- will strip the leading backslash for all character
- sequences which are not listed as valid C/C++ escape sequences when passing
- the unescaped character to an attached action.</p>
- <p>Please note though, that if there is a semantic action attached to an
- outermost parser (for instance as in <tt>(*c_escape_ch_p)[some_actor]</tt>,
- where the action is attached to the kleene star generated parser) no conversion
- takes place at the moment, but nevertheless the escaped characters are parsed
- correctly. This limitation will be removed in a future version of the library.</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="switch_parser.html"><img src="theme/l_arr.gif" width="20" height="19" border="0"></a></td>
- <td width="30"><a href="loops.html"><img src="theme/r_arr.gif" border="0"></a></td>
- </tr>
- </table>
- <br>
- <hr size="1">
- <p class="copyright">Copyright © 2001-2002 Daniel C. Nuffer<br>
- Copyright © 2003 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>
|