Public Methods | |
cmt_char_list_node (cmt_string list) | |
const cmt_regexp::iterator | match (const cmt_string& text, int pos) const |
Protected Attributes | |
cmt_string | _list |
cmt_string | _choices |
|
Definition at line 323 of file cmt_regexp.cxx. 00324 { 00325 _list = list; 00326 00327 _choices = ""; 00328 00329 char c; 00330 int i; 00331 00332 for (i = 0; i < list.size (); i++) 00333 { 00334 c = list[i]; 00335 00336 switch (c) 00337 { 00338 case '-': 00339 i++; 00340 { 00341 char c1 = _choices[_choices.size () - 1]; 00342 char c2 = list[i]; 00343 int j; 00344 int j0 = (c1 < c2) ? c1 : c2; 00345 int j1 = (c1 > c2) ? c1 : c2; 00346 for (j = j0; j <= j1; j++) 00347 { 00348 _choices += j; 00349 } 00350 } 00351 break; 00352 case '\\': 00353 i++; 00354 c = list[i]; 00355 switch (c) 00356 { 00357 case '[': 00358 case ']': 00359 case '(': 00360 case ')': 00361 case '.': 00362 case '*': 00363 case '?': 00364 case '^': 00365 case '$': 00366 case '\\': 00367 break; 00368 case 'r': 00369 c = '\r'; 00370 break; 00371 case 't': 00372 c = '\t'; 00373 break; 00374 case 'n': 00375 c = '\n'; 00376 break; 00377 default: 00378 break; 00379 } 00380 default: 00381 _choices += c; 00382 break; 00383 } 00384 } 00385 } |
|
Reimplemented from cmt_node. Reimplemented in cmt_not_char_list_node. Definition at line 387 of file cmt_regexp.cxx. 00389 { 00390 if ((pos < 0) || (pos > text.size ())) 00391 { 00392 return (cmt_regexp::iterator::null ()); 00393 } 00394 00395 char c = text[pos]; 00396 00397 int i; 00398 00399 for (i = 0; i < _choices.size (); i++) 00400 { 00401 if (c == _choices[i]) return (cmt_regexp::iterator (pos, 1)); 00402 } 00403 00404 return (cmt_regexp::iterator::null ()); 00405 } |
|
Definition at line 71 of file cmt_regexp.cxx. |
|
Definition at line 70 of file cmt_regexp.cxx. |