• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Parser Directive Inhibiting Case Sensitivity (no_case[])</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="../directive.html" title="Parser Directives">
9<link rel="prev" href="no_skip.html" title="Parser Directive Inhibiting Skipping Without Pre-skip (no_skip[])">
10<link rel="next" href="omit.html" title="Parser Directive Ignoring Attribute (omit[])">
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="no_skip.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="omit.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.no_case"></a><a class="link" href="no_case.html" title="Parser Directive Inhibiting Case Sensitivity (no_case[])">Parser Directive
28          Inhibiting Case Sensitivity (<code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>)</a>
29</h5></div></div></div>
30<h6>
31<a name="spirit.qi.reference.directive.no_case.h0"></a>
32            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.description"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.description">Description</a>
33          </h6>
34<p>
35            The <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>
36            directive does not consume any input. The actual matching is done by
37            its subject parser. It's purpose is to force matching of the subject
38            parser (and all its children) to be case insensitive.
39          </p>
40<h6>
41<a name="spirit.qi.reference.directive.no_case.h1"></a>
42            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.header"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.header">Header</a>
43          </h6>
44<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/directive/no_case.hpp&gt;</span>
45<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_no_case</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
46</pre>
47<p>
48            Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
49          </p>
50<h6>
51<a name="spirit.qi.reference.directive.no_case.h2"></a>
52            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.namespace"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.namespace">Namespace</a>
53          </h6>
54<div class="informaltable"><table class="table">
55<colgroup><col></colgroup>
56<thead><tr><th>
57                    <p>
58                      Name
59                    </p>
60                  </th></tr></thead>
61<tbody><tr><td>
62                    <p>
63                      <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span></code>
64                    </p>
65                  </td></tr></tbody>
66</table></div>
67<p>
68            In the table above, <code class="computeroutput"><span class="identifier">ns</span></code>
69            represents a <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
70            Encoding Namespace</a>.
71          </p>
72<h6>
73<a name="spirit.qi.reference.directive.no_case.h3"></a>
74            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.model_of"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.model_of">Model
75            of</a>
76          </h6>
77<p>
78            The model of <code class="computeroutput"><span class="identifier">no_case</span></code>
79            is the model of its subject parser.
80          </p>
81<div class="variablelist">
82<p class="title"><b>Notation</b></p>
83<dl class="variablelist">
84<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
85<dd><p>
86                  A <a class="link" href="../parser_concepts/parser.html" title="Parser"><code class="computeroutput"><span class="identifier">Parser</span></code></a>.
87                </p></dd>
88<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
89<dd><p>
90                  A <a class="link" href="../basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
91                  Encoding Namespace</a>.
92                </p></dd>
93</dl>
94</div>
95<h6>
96<a name="spirit.qi.reference.directive.no_case.h4"></a>
97            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.expression_semantics"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.expression_semantics">Expression
98            Semantics</a>
99          </h6>
100<p>
101            Semantics of an expression is defined only where it differs from, or
102            is not defined in the subject's concept.
103          </p>
104<div class="informaltable"><table class="table">
105<colgroup>
106<col>
107<col>
108</colgroup>
109<thead><tr>
110<th>
111                    <p>
112                      Expression
113                    </p>
114                  </th>
115<th>
116                    <p>
117                      Semantics
118                    </p>
119                  </th>
120</tr></thead>
121<tbody><tr>
122<td>
123                    <p>
124                      <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
125                    </p>
126                  </td>
127<td>
128                    <p>
129                      Force matching of the subject parser, <code class="computeroutput"><span class="identifier">a</span></code>
130                      (and all its children) to be case insensitive
131                    </p>
132                  </td>
133</tr></tbody>
134</table></div>
135<h6>
136<a name="spirit.qi.reference.directive.no_case.h5"></a>
137            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.attributes"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.attributes">Attributes</a>
138          </h6>
139<p>
140            See <a class="link" href="../../quick_reference/compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Compound
141            Attribute Notation</a>.
142          </p>
143<div class="informaltable"><table class="table">
144<colgroup>
145<col>
146<col>
147</colgroup>
148<thead><tr>
149<th>
150                    <p>
151                      Expression
152                    </p>
153                  </th>
154<th>
155                    <p>
156                      Attribute
157                    </p>
158                  </th>
159</tr></thead>
160<tbody><tr>
161<td>
162                    <p>
163                      <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]</span></code>
164                    </p>
165                  </td>
166<td>
167                    <p>
168</p>
169<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">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
170<span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">ns</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
171<p>
172                    </p>
173                  </td>
174</tr></tbody>
175</table></div>
176<h6>
177<a name="spirit.qi.reference.directive.no_case.h6"></a>
178            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.complexity"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.complexity">Complexity</a>
179          </h6>
180<div class="blockquote"><blockquote class="blockquote"><p>
181              The complexity is defined by the complexity of the subject parser,
182              <code class="computeroutput"><span class="identifier">a</span></code>
183            </p></blockquote></div>
184<h6>
185<a name="spirit.qi.reference.directive.no_case.h7"></a>
186            <span class="phrase"><a name="spirit.qi.reference.directive.no_case.example"></a></span><a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.example">Example</a>
187          </h6>
188<div class="note"><table border="0" summary="Note">
189<tr>
190<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
191<th align="left">Note</th>
192</tr>
193<tr><td align="left" valign="top"><p>
194              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>
195              section.
196            </p></td></tr>
197</table></div>
198<p>
199            Some using declarations:
200          </p>
201<p>
202</p>
203<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">ascii</span><span class="special">::</span><span class="identifier">no_case</span><span class="special">;</span>
204<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>
205<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">alnum</span><span class="special">;</span>
206<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">symbols</span><span class="special">;</span>
207</pre>
208<p>
209          </p>
210<p>
211            Simple usage of <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>:
212          </p>
213<p>
214</p>
215<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"X"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span><span class="identifier">char_</span><span class="special">(</span><span class="char">'x'</span><span class="special">)]);</span>
216<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"6"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span><span class="identifier">alnum</span><span class="special">]);</span>
217</pre>
218<p>
219          </p>
220<p>
221            A more sophisticated use case of <code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code> in conjunction with a symbol table
222            (see <a class="link" href="../string/symbols.html" title="Symbols Parser (symbols)"><code class="computeroutput"><span class="identifier">symbols</span><span class="special">&lt;&gt;</span></code></a>
223            for more details):
224          </p>
225<p>
226</p>
227<pre class="programlisting"><span class="identifier">symbols</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">sym</span><span class="special">;</span>
228
229<span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
230    <span class="special">(</span><span class="string">"apple"</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>    <span class="comment">// symbol strings are added in lowercase...</span>
231    <span class="special">(</span><span class="string">"banana"</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span>
232    <span class="special">(</span><span class="string">"orange"</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
233<span class="special">;</span>
234
235<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
236<span class="comment">// ...because sym is used for case-insensitive parsing</span>
237<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Apple"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
238<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</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>
239<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"ORANGE"</span><span class="special">,</span> <span class="identifier">no_case</span><span class="special">[</span> <span class="identifier">sym</span> <span class="special">],</span> <span class="identifier">i</span><span class="special">);</span>
240<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</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>
241</pre>
242<p>
243          </p>
244</div>
245<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
246<td align="left"></td>
247<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
248        Distributed under the Boost Software License, Version 1.0. (See accompanying
249        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>)
250      </p>
251</div></td>
252</tr></table>
253<hr>
254<div class="spirit-nav">
255<a accesskey="p" href="no_skip.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="omit.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
256</div>
257</body>
258</html>
259