6 |
and semantics are as close as possible to those of the Perl 5 language. |
and semantics are as close as possible to those of the Perl 5 language. |
7 |
|
|
8 |
Written by Philip Hazel |
Written by Philip Hazel |
9 |
Copyright (c) 1997-2007 University of Cambridge |
Copyright (c) 1997-2008 University of Cambridge |
10 |
|
|
11 |
----------------------------------------------------------------------------- |
----------------------------------------------------------------------------- |
12 |
Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
2688 |
#ifdef SUPPORT_UTF8 |
#ifdef SUPPORT_UTF8 |
2689 |
class_utf8 = FALSE; /* No chars >= 256 */ |
class_utf8 = FALSE; /* No chars >= 256 */ |
2690 |
class_utf8data = code + LINK_SIZE + 2; /* For UTF-8 items */ |
class_utf8data = code + LINK_SIZE + 2; /* For UTF-8 items */ |
2691 |
class_utf8data_base = class_utf8data; /* For resetting in pass 1 */ |
class_utf8data_base = class_utf8data; /* For resetting in pass 1 */ |
2692 |
#endif |
#endif |
2693 |
|
|
2694 |
/* Process characters until ] is reached. By writing this as a "do" it |
/* Process characters until ] is reached. By writing this as a "do" it |
2704 |
{ /* Braces are required because the */ |
{ /* Braces are required because the */ |
2705 |
GETCHARLEN(c, ptr, ptr); /* macro generates multiple statements */ |
GETCHARLEN(c, ptr, ptr); /* macro generates multiple statements */ |
2706 |
} |
} |
2707 |
|
|
2708 |
/* In the pre-compile phase, accumulate the length of any UTF-8 extra |
/* In the pre-compile phase, accumulate the length of any UTF-8 extra |
2709 |
data and reset the pointer. This is so that very large classes that |
data and reset the pointer. This is so that very large classes that |
2710 |
contain a zillion UTF-8 characters no longer overwrite the work space |
contain a zillion UTF-8 characters no longer overwrite the work space |
2711 |
(which is on the stack). */ |
(which is on the stack). */ |
2712 |
|
|
2713 |
if (lengthptr != NULL) |
if (lengthptr != NULL) |
2714 |
{ |
{ |
2715 |
*lengthptr += class_utf8data - class_utf8data_base; |
*lengthptr += class_utf8data - class_utf8data_base; |
2716 |
class_utf8data = class_utf8data_base; |
class_utf8data = class_utf8data_base; |
2717 |
} |
} |
2718 |
|
|
2719 |
#endif |
#endif |
2720 |
|
|
2721 |
/* Inside \Q...\E everything is literal except \E */ |
/* Inside \Q...\E everything is literal except \E */ |