]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* |
2 | * | |
3 | * Copyright (c) 2004 | |
4 | * John Maddock | |
5 | * | |
6 | * Use, modification and distribution are subject to the | |
7 | * Boost Software License, Version 1.0. (See accompanying file | |
8 | * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
9 | * | |
10 | */ | |
11 | ||
12 | /* | |
13 | * LOCATION: see http://www.boost.org for most recent version. | |
14 | * FILE regex_traits_defaults.cpp | |
15 | * VERSION see <boost/version.hpp> | |
16 | * DESCRIPTION: Declares API's for access to regex_traits default properties. | |
17 | */ | |
18 | ||
19 | #define BOOST_REGEX_SOURCE | |
20 | #include <boost/regex/regex_traits.hpp> | |
21 | ||
22 | #include <cctype> | |
23 | #ifndef BOOST_NO_WREGEX | |
24 | #include <cwctype> | |
25 | #endif | |
26 | ||
27 | #if defined(BOOST_NO_STDC_NAMESPACE) | |
28 | namespace std{ | |
29 | using ::tolower; | |
30 | using ::toupper; | |
31 | #ifndef BOOST_NO_WREGEX | |
32 | using ::towlower; | |
33 | using ::towupper; | |
34 | #endif | |
35 | } | |
36 | #endif | |
37 | ||
38 | ||
39 | namespace boost{ namespace BOOST_REGEX_DETAIL_NS{ | |
40 | ||
41 | BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n) | |
42 | { | |
43 | // if the user hasn't supplied a message catalog, then this supplies | |
44 | // default "messages" for us to load in the range 1-100. | |
45 | const char* messages[] = { | |
46 | "", | |
47 | "(", | |
48 | ")", | |
49 | "$", | |
50 | "^", | |
51 | ".", | |
52 | "*", | |
53 | "+", | |
54 | "?", | |
55 | "[", | |
56 | "]", | |
57 | "|", | |
58 | "\\", | |
59 | "#", | |
60 | "-", | |
61 | "{", | |
62 | "}", | |
63 | "0123456789", | |
64 | "b", | |
65 | "B", | |
66 | "<", | |
67 | ">", | |
68 | "", | |
69 | "", | |
70 | "A`", | |
71 | "z'", | |
72 | "\n", | |
73 | ",", | |
74 | "a", | |
75 | "f", | |
76 | "n", | |
77 | "r", | |
78 | "t", | |
79 | "v", | |
80 | "x", | |
81 | "c", | |
82 | ":", | |
83 | "=", | |
84 | "e", | |
85 | "", | |
86 | "", | |
87 | "", | |
88 | "", | |
89 | "", | |
90 | "", | |
91 | "", | |
92 | "", | |
93 | "E", | |
94 | "Q", | |
95 | "X", | |
96 | "C", | |
97 | "Z", | |
98 | "G", | |
99 | "!", | |
100 | "p", | |
101 | "P", | |
102 | "N", | |
103 | "gk", | |
104 | "K", | |
105 | "R", | |
106 | }; | |
107 | ||
108 | return ((n >= (sizeof(messages) / sizeof(messages[1]))) ? "" : messages[n]); | |
109 | } | |
110 | ||
111 | BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n) | |
112 | { | |
113 | static const char* const s_default_error_messages[] = { | |
114 | "Success", /* REG_NOERROR 0 error_ok */ | |
115 | "No match", /* REG_NOMATCH 1 error_no_match */ | |
116 | "Invalid regular expression.", /* REG_BADPAT 2 error_bad_pattern */ | |
117 | "Invalid collation character.", /* REG_ECOLLATE 3 error_collate */ | |
118 | "Invalid character class name, collating name, or character range.", /* REG_ECTYPE 4 error_ctype */ | |
119 | "Invalid or unterminated escape sequence.", /* REG_EESCAPE 5 error_escape */ | |
120 | "Invalid back reference: specified capturing group does not exist.", /* REG_ESUBREG 6 error_backref */ | |
121 | "Unmatched [ or [^ in character class declaration.", /* REG_EBRACK 7 error_brack */ | |
122 | "Unmatched marking parenthesis ( or \\(.", /* REG_EPAREN 8 error_paren */ | |
123 | "Unmatched quantified repeat operator { or \\{.", /* REG_EBRACE 9 error_brace */ | |
124 | "Invalid content of repeat range.", /* REG_BADBR 10 error_badbrace */ | |
125 | "Invalid range end in character class", /* REG_ERANGE 11 error_range */ | |
126 | "Out of memory.", /* REG_ESPACE 12 error_space NOT USED */ | |
127 | "Invalid preceding regular expression prior to repetition operator.", /* REG_BADRPT 13 error_badrepeat */ | |
128 | "Premature end of regular expression", /* REG_EEND 14 error_end NOT USED */ | |
129 | "Regular expression is too large.", /* REG_ESIZE 15 error_size NOT USED */ | |
130 | "Unmatched ) or \\)", /* REG_ERPAREN 16 error_right_paren NOT USED */ | |
131 | "Empty regular expression.", /* REG_EMPTY 17 error_empty */ | |
132 | "The complexity of matching the regular expression exceeded predefined bounds. " | |
133 | "Try refactoring the regular expression to make each choice made by the state machine unambiguous. " | |
134 | "This exception is thrown to prevent \"eternal\" matches that take an " | |
135 | "indefinite period time to locate.", /* REG_ECOMPLEXITY 18 error_complexity */ | |
136 | "Ran out of stack space trying to match the regular expression.", /* REG_ESTACK 19 error_stack */ | |
137 | "Invalid or unterminated Perl (?...) sequence.", /* REG_E_PERL 20 error_perl */ | |
138 | "Unknown error.", /* REG_E_UNKNOWN 21 error_unknown */ | |
139 | }; | |
140 | ||
141 | return (n > ::boost::regex_constants::error_unknown) ? s_default_error_messages[ ::boost::regex_constants::error_unknown] : s_default_error_messages[n]; | |
142 | } | |
143 | ||
144 | BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(boost::uint_least16_t c) | |
145 | { | |
146 | const boost::uint_least16_t combining_ranges[] = { 0x0300, 0x0361, | |
147 | 0x0483, 0x0486, | |
148 | 0x0903, 0x0903, | |
149 | 0x093E, 0x0940, | |
150 | 0x0949, 0x094C, | |
151 | 0x0982, 0x0983, | |
152 | 0x09BE, 0x09C0, | |
153 | 0x09C7, 0x09CC, | |
154 | 0x09D7, 0x09D7, | |
155 | 0x0A3E, 0x0A40, | |
156 | 0x0A83, 0x0A83, | |
157 | 0x0ABE, 0x0AC0, | |
158 | 0x0AC9, 0x0ACC, | |
159 | 0x0B02, 0x0B03, | |
160 | 0x0B3E, 0x0B3E, | |
161 | 0x0B40, 0x0B40, | |
162 | 0x0B47, 0x0B4C, | |
163 | 0x0B57, 0x0B57, | |
164 | 0x0B83, 0x0B83, | |
165 | 0x0BBE, 0x0BBF, | |
166 | 0x0BC1, 0x0BCC, | |
167 | 0x0BD7, 0x0BD7, | |
168 | 0x0C01, 0x0C03, | |
169 | 0x0C41, 0x0C44, | |
170 | 0x0C82, 0x0C83, | |
171 | 0x0CBE, 0x0CBE, | |
172 | 0x0CC0, 0x0CC4, | |
173 | 0x0CC7, 0x0CCB, | |
174 | 0x0CD5, 0x0CD6, | |
175 | 0x0D02, 0x0D03, | |
176 | 0x0D3E, 0x0D40, | |
177 | 0x0D46, 0x0D4C, | |
178 | 0x0D57, 0x0D57, | |
179 | 0x0F7F, 0x0F7F, | |
180 | 0x20D0, 0x20E1, | |
181 | 0x3099, 0x309A, | |
182 | 0xFE20, 0xFE23, | |
183 | 0xffff, 0xffff, }; | |
184 | ||
185 | const boost::uint_least16_t* p = combining_ranges + 1; | |
186 | while(*p < c) p += 2; | |
187 | --p; | |
188 | if((c >= *p) && (c <= *(p+1))) | |
189 | return true; | |
190 | return false; | |
191 | } | |
192 | ||
193 | // | |
194 | // these are the POSIX collating names: | |
195 | // | |
20effc67 | 196 | static const char* def_coll_names[] = { |
7c673cae FG |
197 | "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "alert", "backspace", "tab", "newline", |
198 | "vertical-tab", "form-feed", "carriage-return", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", | |
199 | "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "IS4", "IS3", "IS2", "IS1", "space", "exclamation-mark", | |
200 | "quotation-mark", "number-sign", "dollar-sign", "percent-sign", "ampersand", "apostrophe", | |
201 | "left-parenthesis", "right-parenthesis", "asterisk", "plus-sign", "comma", "hyphen", | |
202 | "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", | |
203 | "colon", "semicolon", "less-than-sign", "equals-sign", "greater-than-sign", | |
204 | "question-mark", "commercial-at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", | |
205 | "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "left-square-bracket", "backslash", | |
206 | "right-square-bracket", "circumflex", "underscore", "grave-accent", "a", "b", "c", "d", "e", "f", | |
207 | "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "left-curly-bracket", | |
208 | "vertical-line", "right-curly-bracket", "tilde", "DEL", "", | |
209 | }; | |
210 | ||
211 | // these multi-character collating elements | |
212 | // should keep most Western-European locales | |
213 | // happy - we should really localise these a | |
214 | // little more - but this will have to do for | |
215 | // now: | |
216 | ||
20effc67 | 217 | static const char* def_multi_coll[] = { |
7c673cae FG |
218 | "ae", |
219 | "Ae", | |
220 | "AE", | |
221 | "ch", | |
222 | "Ch", | |
223 | "CH", | |
224 | "ll", | |
225 | "Ll", | |
226 | "LL", | |
227 | "ss", | |
228 | "Ss", | |
229 | "SS", | |
230 | "nj", | |
231 | "Nj", | |
232 | "NJ", | |
233 | "dz", | |
234 | "Dz", | |
235 | "DZ", | |
236 | "lj", | |
237 | "Lj", | |
238 | "LJ", | |
239 | "", | |
240 | }; | |
241 | ||
242 | ||
243 | ||
244 | BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name) | |
245 | { | |
246 | unsigned int i = 0; | |
247 | while(*def_coll_names[i]) | |
248 | { | |
249 | if(def_coll_names[i] == name) | |
250 | { | |
251 | return std::string(1, char(i)); | |
252 | } | |
253 | ++i; | |
254 | } | |
255 | i = 0; | |
256 | while(*def_multi_coll[i]) | |
257 | { | |
258 | if(def_multi_coll[i] == name) | |
259 | { | |
260 | return def_multi_coll[i]; | |
261 | } | |
262 | ++i; | |
263 | } | |
264 | return std::string(); | |
265 | } | |
266 | ||
267 | BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c) | |
268 | { | |
269 | return static_cast<char>((std::tolower)((unsigned char)c)); | |
270 | } | |
271 | ||
272 | BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c) | |
273 | { | |
274 | return static_cast<char>((std::toupper)((unsigned char)c)); | |
275 | } | |
276 | #ifndef BOOST_NO_WREGEX | |
277 | BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c) | |
278 | { | |
279 | return (std::towlower)(c); | |
280 | } | |
281 | ||
282 | BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c) | |
283 | { | |
284 | return (std::towupper)(c); | |
285 | } | |
286 | #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T | |
287 | BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c) | |
288 | { | |
289 | return (std::towlower)(c); | |
290 | } | |
291 | ||
292 | BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c) | |
293 | { | |
294 | return (std::towupper)(c); | |
295 | } | |
296 | #endif | |
297 | ||
298 | #endif | |
299 | ||
300 | BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c) | |
301 | { | |
302 | // | |
303 | // char_syntax determines how the compiler treats a given character | |
304 | // in a regular expression. | |
305 | // | |
306 | static regex_constants::escape_syntax_type char_syntax[] = { | |
307 | regex_constants::escape_type_identity, /**/ | |
308 | regex_constants::escape_type_identity, /**/ | |
309 | regex_constants::escape_type_identity, /**/ | |
310 | regex_constants::escape_type_identity, /**/ | |
311 | regex_constants::escape_type_identity, /**/ | |
312 | regex_constants::escape_type_identity, /**/ | |
313 | regex_constants::escape_type_identity, /**/ | |
314 | regex_constants::escape_type_identity, /**/ | |
315 | regex_constants::escape_type_identity, /**/ | |
316 | regex_constants::escape_type_identity, /**/ | |
317 | regex_constants::escape_type_identity, /**/ | |
318 | regex_constants::escape_type_identity, /**/ | |
319 | regex_constants::escape_type_identity, /**/ | |
320 | regex_constants::escape_type_identity, /**/ | |
321 | regex_constants::escape_type_identity, /**/ | |
322 | regex_constants::escape_type_identity, /**/ | |
323 | regex_constants::escape_type_identity, /**/ | |
324 | regex_constants::escape_type_identity, /**/ | |
325 | regex_constants::escape_type_identity, /**/ | |
326 | regex_constants::escape_type_identity, /**/ | |
327 | regex_constants::escape_type_identity, /**/ | |
328 | regex_constants::escape_type_identity, /**/ | |
329 | regex_constants::escape_type_identity, /**/ | |
330 | regex_constants::escape_type_identity, /**/ | |
331 | regex_constants::escape_type_identity, /**/ | |
332 | regex_constants::escape_type_identity, /**/ | |
333 | regex_constants::escape_type_identity, /**/ | |
334 | regex_constants::escape_type_identity, /**/ | |
335 | regex_constants::escape_type_identity, /**/ | |
336 | regex_constants::escape_type_identity, /**/ | |
337 | regex_constants::escape_type_identity, /**/ | |
338 | regex_constants::escape_type_identity, /**/ | |
339 | regex_constants::escape_type_identity, /* */ // 32 | |
340 | regex_constants::escape_type_identity, /*!*/ | |
341 | regex_constants::escape_type_identity, /*"*/ | |
342 | regex_constants::escape_type_identity, /*#*/ | |
343 | regex_constants::escape_type_identity, /*$*/ | |
344 | regex_constants::escape_type_identity, /*%*/ | |
345 | regex_constants::escape_type_identity, /*&*/ | |
346 | regex_constants::escape_type_end_buffer, /*'*/ | |
347 | regex_constants::syntax_open_mark, /*(*/ | |
348 | regex_constants::syntax_close_mark, /*)*/ | |
349 | regex_constants::escape_type_identity, /***/ | |
350 | regex_constants::syntax_plus, /*+*/ | |
351 | regex_constants::escape_type_identity, /*,*/ | |
352 | regex_constants::escape_type_identity, /*-*/ | |
353 | regex_constants::escape_type_identity, /*.*/ | |
354 | regex_constants::escape_type_identity, /*/*/ | |
355 | regex_constants::escape_type_decimal, /*0*/ | |
356 | regex_constants::escape_type_backref, /*1*/ | |
357 | regex_constants::escape_type_backref, /*2*/ | |
358 | regex_constants::escape_type_backref, /*3*/ | |
359 | regex_constants::escape_type_backref, /*4*/ | |
360 | regex_constants::escape_type_backref, /*5*/ | |
361 | regex_constants::escape_type_backref, /*6*/ | |
362 | regex_constants::escape_type_backref, /*7*/ | |
363 | regex_constants::escape_type_backref, /*8*/ | |
364 | regex_constants::escape_type_backref, /*9*/ | |
365 | regex_constants::escape_type_identity, /*:*/ | |
366 | regex_constants::escape_type_identity, /*;*/ | |
367 | regex_constants::escape_type_left_word, /*<*/ | |
368 | regex_constants::escape_type_identity, /*=*/ | |
369 | regex_constants::escape_type_right_word, /*>*/ | |
370 | regex_constants::syntax_question, /*?*/ | |
371 | regex_constants::escape_type_identity, /*@*/ | |
372 | regex_constants::escape_type_start_buffer, /*A*/ | |
373 | regex_constants::escape_type_not_word_assert, /*B*/ | |
374 | regex_constants::escape_type_C, /*C*/ | |
375 | regex_constants::escape_type_not_class, /*D*/ | |
376 | regex_constants::escape_type_E, /*E*/ | |
377 | regex_constants::escape_type_not_class, /*F*/ | |
378 | regex_constants::escape_type_G, /*G*/ | |
379 | regex_constants::escape_type_not_class, /*H*/ | |
380 | regex_constants::escape_type_not_class, /*I*/ | |
381 | regex_constants::escape_type_not_class, /*J*/ | |
382 | regex_constants::escape_type_reset_start_mark, /*K*/ | |
383 | regex_constants::escape_type_not_class, /*L*/ | |
384 | regex_constants::escape_type_not_class, /*M*/ | |
385 | regex_constants::escape_type_named_char, /*N*/ | |
386 | regex_constants::escape_type_not_class, /*O*/ | |
387 | regex_constants::escape_type_not_property, /*P*/ | |
388 | regex_constants::escape_type_Q, /*Q*/ | |
389 | regex_constants::escape_type_line_ending, /*R*/ | |
390 | regex_constants::escape_type_not_class, /*S*/ | |
391 | regex_constants::escape_type_not_class, /*T*/ | |
392 | regex_constants::escape_type_not_class, /*U*/ | |
393 | regex_constants::escape_type_not_class, /*V*/ | |
394 | regex_constants::escape_type_not_class, /*W*/ | |
395 | regex_constants::escape_type_X, /*X*/ | |
396 | regex_constants::escape_type_not_class, /*Y*/ | |
397 | regex_constants::escape_type_Z, /*Z*/ | |
398 | regex_constants::escape_type_identity, /*[*/ | |
399 | regex_constants::escape_type_identity, /*\*/ | |
400 | regex_constants::escape_type_identity, /*]*/ | |
401 | regex_constants::escape_type_identity, /*^*/ | |
402 | regex_constants::escape_type_identity, /*_*/ | |
403 | regex_constants::escape_type_start_buffer, /*`*/ | |
404 | regex_constants::escape_type_control_a, /*a*/ | |
405 | regex_constants::escape_type_word_assert, /*b*/ | |
406 | regex_constants::escape_type_ascii_control, /*c*/ | |
407 | regex_constants::escape_type_class, /*d*/ | |
408 | regex_constants::escape_type_e, /*e*/ | |
409 | regex_constants::escape_type_control_f, /*f*/ | |
410 | regex_constants::escape_type_extended_backref, /*g*/ | |
411 | regex_constants::escape_type_class, /*h*/ | |
412 | regex_constants::escape_type_class, /*i*/ | |
413 | regex_constants::escape_type_class, /*j*/ | |
414 | regex_constants::escape_type_extended_backref, /*k*/ | |
415 | regex_constants::escape_type_class, /*l*/ | |
416 | regex_constants::escape_type_class, /*m*/ | |
417 | regex_constants::escape_type_control_n, /*n*/ | |
418 | regex_constants::escape_type_class, /*o*/ | |
419 | regex_constants::escape_type_property, /*p*/ | |
420 | regex_constants::escape_type_class, /*q*/ | |
421 | regex_constants::escape_type_control_r, /*r*/ | |
422 | regex_constants::escape_type_class, /*s*/ | |
423 | regex_constants::escape_type_control_t, /*t*/ | |
424 | regex_constants::escape_type_class, /*u*/ | |
425 | regex_constants::escape_type_control_v, /*v*/ | |
426 | regex_constants::escape_type_class, /*w*/ | |
427 | regex_constants::escape_type_hex, /*x*/ | |
428 | regex_constants::escape_type_class, /*y*/ | |
429 | regex_constants::escape_type_end_buffer, /*z*/ | |
430 | regex_constants::syntax_open_brace, /*{*/ | |
431 | regex_constants::syntax_or, /*|*/ | |
432 | regex_constants::syntax_close_brace, /*}*/ | |
433 | regex_constants::escape_type_identity, /*~*/ | |
434 | regex_constants::escape_type_identity, /**/ | |
435 | regex_constants::escape_type_identity, /**/ | |
436 | regex_constants::escape_type_identity, /**/ | |
437 | regex_constants::escape_type_identity, /**/ | |
438 | regex_constants::escape_type_identity, /**/ | |
439 | regex_constants::escape_type_identity, /**/ | |
440 | regex_constants::escape_type_identity, /**/ | |
441 | regex_constants::escape_type_identity, /**/ | |
442 | regex_constants::escape_type_identity, /**/ | |
443 | regex_constants::escape_type_identity, /**/ | |
444 | regex_constants::escape_type_identity, /**/ | |
445 | regex_constants::escape_type_identity, /**/ | |
446 | regex_constants::escape_type_identity, /**/ | |
447 | regex_constants::escape_type_identity, /**/ | |
448 | regex_constants::escape_type_identity, /**/ | |
449 | regex_constants::escape_type_identity, /**/ | |
450 | regex_constants::escape_type_identity, /**/ | |
451 | regex_constants::escape_type_identity, /**/ | |
452 | regex_constants::escape_type_identity, /**/ | |
453 | regex_constants::escape_type_identity, /**/ | |
454 | regex_constants::escape_type_identity, /**/ | |
455 | regex_constants::escape_type_identity, /**/ | |
456 | regex_constants::escape_type_identity, /**/ | |
457 | regex_constants::escape_type_identity, /**/ | |
458 | regex_constants::escape_type_identity, /**/ | |
459 | regex_constants::escape_type_identity, /**/ | |
460 | regex_constants::escape_type_identity, /**/ | |
461 | regex_constants::escape_type_identity, /**/ | |
462 | regex_constants::escape_type_identity, /**/ | |
463 | regex_constants::escape_type_identity, /**/ | |
464 | regex_constants::escape_type_identity, /**/ | |
465 | regex_constants::escape_type_identity, /**/ | |
466 | regex_constants::escape_type_identity, /**/ | |
467 | regex_constants::escape_type_identity, /**/ | |
468 | regex_constants::escape_type_identity, /**/ | |
469 | regex_constants::escape_type_identity, /**/ | |
470 | regex_constants::escape_type_identity, /**/ | |
471 | regex_constants::escape_type_identity, /**/ | |
472 | regex_constants::escape_type_identity, /**/ | |
473 | regex_constants::escape_type_identity, /**/ | |
474 | regex_constants::escape_type_identity, /**/ | |
475 | regex_constants::escape_type_identity, /**/ | |
476 | regex_constants::escape_type_identity, /**/ | |
477 | regex_constants::escape_type_identity, /**/ | |
478 | regex_constants::escape_type_identity, /**/ | |
479 | regex_constants::escape_type_identity, /**/ | |
480 | regex_constants::escape_type_identity, /**/ | |
481 | regex_constants::escape_type_identity, /**/ | |
482 | regex_constants::escape_type_identity, /**/ | |
483 | regex_constants::escape_type_identity, /**/ | |
484 | regex_constants::escape_type_identity, /**/ | |
485 | regex_constants::escape_type_identity, /**/ | |
486 | regex_constants::escape_type_identity, /**/ | |
487 | regex_constants::escape_type_identity, /**/ | |
488 | regex_constants::escape_type_identity, /**/ | |
489 | regex_constants::escape_type_identity, /**/ | |
490 | }; | |
491 | ||
492 | return char_syntax[(unsigned char)c]; | |
493 | } | |
494 | ||
495 | BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c) | |
496 | { | |
497 | // | |
498 | // char_syntax determines how the compiler treats a given character | |
499 | // in a regular expression. | |
500 | // | |
501 | static regex_constants::syntax_type char_syntax[] = { | |
502 | regex_constants::syntax_char, /**/ | |
503 | regex_constants::syntax_char, /**/ | |
504 | regex_constants::syntax_char, /**/ | |
505 | regex_constants::syntax_char, /**/ | |
506 | regex_constants::syntax_char, /**/ | |
507 | regex_constants::syntax_char, /**/ | |
508 | regex_constants::syntax_char, /**/ | |
509 | regex_constants::syntax_char, /**/ | |
510 | regex_constants::syntax_char, /**/ | |
511 | regex_constants::syntax_char, /**/ | |
512 | regex_constants::syntax_newline, /**/ | |
513 | regex_constants::syntax_char, /**/ | |
514 | regex_constants::syntax_char, /**/ | |
515 | regex_constants::syntax_char, /**/ | |
516 | regex_constants::syntax_char, /**/ | |
517 | regex_constants::syntax_char, /**/ | |
518 | regex_constants::syntax_char, /**/ | |
519 | regex_constants::syntax_char, /**/ | |
520 | regex_constants::syntax_char, /**/ | |
521 | regex_constants::syntax_char, /**/ | |
522 | regex_constants::syntax_char, /**/ | |
523 | regex_constants::syntax_char, /**/ | |
524 | regex_constants::syntax_char, /**/ | |
525 | regex_constants::syntax_char, /**/ | |
526 | regex_constants::syntax_char, /**/ | |
527 | regex_constants::syntax_char, /**/ | |
528 | regex_constants::syntax_char, /**/ | |
529 | regex_constants::syntax_char, /**/ | |
530 | regex_constants::syntax_char, /**/ | |
531 | regex_constants::syntax_char, /**/ | |
532 | regex_constants::syntax_char, /**/ | |
533 | regex_constants::syntax_char, /**/ | |
534 | regex_constants::syntax_char, /* */ // 32 | |
535 | regex_constants::syntax_not, /*!*/ | |
536 | regex_constants::syntax_char, /*"*/ | |
537 | regex_constants::syntax_hash, /*#*/ | |
538 | regex_constants::syntax_dollar, /*$*/ | |
539 | regex_constants::syntax_char, /*%*/ | |
540 | regex_constants::syntax_char, /*&*/ | |
541 | regex_constants::escape_type_end_buffer, /*'*/ | |
542 | regex_constants::syntax_open_mark, /*(*/ | |
543 | regex_constants::syntax_close_mark, /*)*/ | |
544 | regex_constants::syntax_star, /***/ | |
545 | regex_constants::syntax_plus, /*+*/ | |
546 | regex_constants::syntax_comma, /*,*/ | |
547 | regex_constants::syntax_dash, /*-*/ | |
548 | regex_constants::syntax_dot, /*.*/ | |
549 | regex_constants::syntax_char, /*/*/ | |
550 | regex_constants::syntax_digit, /*0*/ | |
551 | regex_constants::syntax_digit, /*1*/ | |
552 | regex_constants::syntax_digit, /*2*/ | |
553 | regex_constants::syntax_digit, /*3*/ | |
554 | regex_constants::syntax_digit, /*4*/ | |
555 | regex_constants::syntax_digit, /*5*/ | |
556 | regex_constants::syntax_digit, /*6*/ | |
557 | regex_constants::syntax_digit, /*7*/ | |
558 | regex_constants::syntax_digit, /*8*/ | |
559 | regex_constants::syntax_digit, /*9*/ | |
560 | regex_constants::syntax_colon, /*:*/ | |
561 | regex_constants::syntax_char, /*;*/ | |
562 | regex_constants::escape_type_left_word, /*<*/ | |
563 | regex_constants::syntax_equal, /*=*/ | |
564 | regex_constants::escape_type_right_word, /*>*/ | |
565 | regex_constants::syntax_question, /*?*/ | |
566 | regex_constants::syntax_char, /*@*/ | |
567 | regex_constants::syntax_char, /*A*/ | |
568 | regex_constants::syntax_char, /*B*/ | |
569 | regex_constants::syntax_char, /*C*/ | |
570 | regex_constants::syntax_char, /*D*/ | |
571 | regex_constants::syntax_char, /*E*/ | |
572 | regex_constants::syntax_char, /*F*/ | |
573 | regex_constants::syntax_char, /*G*/ | |
574 | regex_constants::syntax_char, /*H*/ | |
575 | regex_constants::syntax_char, /*I*/ | |
576 | regex_constants::syntax_char, /*J*/ | |
577 | regex_constants::syntax_char, /*K*/ | |
578 | regex_constants::syntax_char, /*L*/ | |
579 | regex_constants::syntax_char, /*M*/ | |
580 | regex_constants::syntax_char, /*N*/ | |
581 | regex_constants::syntax_char, /*O*/ | |
582 | regex_constants::syntax_char, /*P*/ | |
583 | regex_constants::syntax_char, /*Q*/ | |
584 | regex_constants::syntax_char, /*R*/ | |
585 | regex_constants::syntax_char, /*S*/ | |
586 | regex_constants::syntax_char, /*T*/ | |
587 | regex_constants::syntax_char, /*U*/ | |
588 | regex_constants::syntax_char, /*V*/ | |
589 | regex_constants::syntax_char, /*W*/ | |
590 | regex_constants::syntax_char, /*X*/ | |
591 | regex_constants::syntax_char, /*Y*/ | |
592 | regex_constants::syntax_char, /*Z*/ | |
593 | regex_constants::syntax_open_set, /*[*/ | |
594 | regex_constants::syntax_escape, /*\*/ | |
595 | regex_constants::syntax_close_set, /*]*/ | |
596 | regex_constants::syntax_caret, /*^*/ | |
597 | regex_constants::syntax_char, /*_*/ | |
598 | regex_constants::syntax_char, /*`*/ | |
599 | regex_constants::syntax_char, /*a*/ | |
600 | regex_constants::syntax_char, /*b*/ | |
601 | regex_constants::syntax_char, /*c*/ | |
602 | regex_constants::syntax_char, /*d*/ | |
603 | regex_constants::syntax_char, /*e*/ | |
604 | regex_constants::syntax_char, /*f*/ | |
605 | regex_constants::syntax_char, /*g*/ | |
606 | regex_constants::syntax_char, /*h*/ | |
607 | regex_constants::syntax_char, /*i*/ | |
608 | regex_constants::syntax_char, /*j*/ | |
609 | regex_constants::syntax_char, /*k*/ | |
610 | regex_constants::syntax_char, /*l*/ | |
611 | regex_constants::syntax_char, /*m*/ | |
612 | regex_constants::syntax_char, /*n*/ | |
613 | regex_constants::syntax_char, /*o*/ | |
614 | regex_constants::syntax_char, /*p*/ | |
615 | regex_constants::syntax_char, /*q*/ | |
616 | regex_constants::syntax_char, /*r*/ | |
617 | regex_constants::syntax_char, /*s*/ | |
618 | regex_constants::syntax_char, /*t*/ | |
619 | regex_constants::syntax_char, /*u*/ | |
620 | regex_constants::syntax_char, /*v*/ | |
621 | regex_constants::syntax_char, /*w*/ | |
622 | regex_constants::syntax_char, /*x*/ | |
623 | regex_constants::syntax_char, /*y*/ | |
624 | regex_constants::syntax_char, /*z*/ | |
625 | regex_constants::syntax_open_brace, /*{*/ | |
626 | regex_constants::syntax_or, /*|*/ | |
627 | regex_constants::syntax_close_brace, /*}*/ | |
628 | regex_constants::syntax_char, /*~*/ | |
629 | regex_constants::syntax_char, /**/ | |
630 | regex_constants::syntax_char, /**/ | |
631 | regex_constants::syntax_char, /**/ | |
632 | regex_constants::syntax_char, /**/ | |
633 | regex_constants::syntax_char, /**/ | |
634 | regex_constants::syntax_char, /**/ | |
635 | regex_constants::syntax_char, /**/ | |
636 | regex_constants::syntax_char, /**/ | |
637 | regex_constants::syntax_char, /**/ | |
638 | regex_constants::syntax_char, /**/ | |
639 | regex_constants::syntax_char, /**/ | |
640 | regex_constants::syntax_char, /**/ | |
641 | regex_constants::syntax_char, /**/ | |
642 | regex_constants::syntax_char, /**/ | |
643 | regex_constants::syntax_char, /**/ | |
644 | regex_constants::syntax_char, /**/ | |
645 | regex_constants::syntax_char, /**/ | |
646 | regex_constants::syntax_char, /**/ | |
647 | regex_constants::syntax_char, /**/ | |
648 | regex_constants::syntax_char, /**/ | |
649 | regex_constants::syntax_char, /**/ | |
650 | regex_constants::syntax_char, /**/ | |
651 | regex_constants::syntax_char, /**/ | |
652 | regex_constants::syntax_char, /**/ | |
653 | regex_constants::syntax_char, /**/ | |
654 | regex_constants::syntax_char, /**/ | |
655 | regex_constants::syntax_char, /**/ | |
656 | regex_constants::syntax_char, /**/ | |
657 | regex_constants::syntax_char, /**/ | |
658 | regex_constants::syntax_char, /**/ | |
659 | regex_constants::syntax_char, /**/ | |
660 | regex_constants::syntax_char, /**/ | |
661 | regex_constants::syntax_char, /**/ | |
662 | regex_constants::syntax_char, /**/ | |
663 | regex_constants::syntax_char, /**/ | |
664 | regex_constants::syntax_char, /**/ | |
665 | regex_constants::syntax_char, /**/ | |
666 | regex_constants::syntax_char, /**/ | |
667 | regex_constants::syntax_char, /**/ | |
668 | regex_constants::syntax_char, /**/ | |
669 | regex_constants::syntax_char, /**/ | |
670 | regex_constants::syntax_char, /**/ | |
671 | regex_constants::syntax_char, /**/ | |
672 | regex_constants::syntax_char, /**/ | |
673 | regex_constants::syntax_char, /**/ | |
674 | regex_constants::syntax_char, /**/ | |
675 | regex_constants::syntax_char, /**/ | |
676 | regex_constants::syntax_char, /**/ | |
677 | regex_constants::syntax_char, /**/ | |
678 | regex_constants::syntax_char, /**/ | |
679 | regex_constants::syntax_char, /**/ | |
680 | regex_constants::syntax_char, /**/ | |
681 | regex_constants::syntax_char, /**/ | |
682 | regex_constants::syntax_char, /**/ | |
683 | regex_constants::syntax_char, /**/ | |
684 | regex_constants::syntax_char, /**/ | |
685 | }; | |
686 | ||
687 | return char_syntax[(unsigned char)c]; | |
688 | } | |
689 | ||
690 | ||
691 | } // BOOST_REGEX_DETAIL_NS | |
692 | } // boost |