diff options
-rw-r--r-- | Modules/sre.h | 18 | ||||
-rw-r--r-- | Modules/sre_constants.h | 48 |
2 files changed, 44 insertions, 22 deletions
diff --git a/Modules/sre.h b/Modules/sre.h index 3664c9d..a5f0aeb 100644 --- a/Modules/sre.h +++ b/Modules/sre.h @@ -14,6 +14,9 @@ #include "sre_constants.h" +/* size of a code word (must be unsigned short or larger) */ +#define SRE_CODE unsigned short + typedef struct { PyObject_HEAD PyObject* code; /* link to the code string object */ @@ -35,6 +38,14 @@ typedef struct { int mark[2]; } MatchObject; +typedef unsigned int (*SRE_TOLOWER_HOOK)(unsigned int ch); + +typedef struct { + /* stack elements */ + SRE_CODE* pattern; + void* ptr; +} SRE_STACK; + typedef struct { /* string pointers */ void* ptr; /* current position (also end of current slice) */ @@ -44,15 +55,18 @@ typedef struct { /* character size */ int charsize; /* registers */ - int marks; + int lastmark; void* mark[64]; /* FIXME: <fl> should be dynamically allocated! */ /* backtracking stack */ - void** stack; + SRE_STACK* stack; int stacksize; int stackbase; + /* hooks */ + SRE_TOLOWER_HOOK tolower; } SRE_STATE; typedef struct { + /* search helper */ PyObject_HEAD PyObject* pattern; PyObject* string; diff --git a/Modules/sre_constants.h b/Modules/sre_constants.h index c6b123e..01c8448 100644 --- a/Modules/sre_constants.h +++ b/Modules/sre_constants.h @@ -11,20 +11,19 @@ #define SRE_OP_GROUP_IGNORE 9 #define SRE_OP_IN 10 #define SRE_OP_IN_IGNORE 11 -#define SRE_OP_JUMP 12 -#define SRE_OP_LITERAL 13 -#define SRE_OP_LITERAL_IGNORE 14 -#define SRE_OP_MARK 15 -#define SRE_OP_MAX_REPEAT 16 -#define SRE_OP_MAX_UNTIL 17 +#define SRE_OP_INFO 12 +#define SRE_OP_JUMP 13 +#define SRE_OP_LITERAL 14 +#define SRE_OP_LITERAL_IGNORE 15 +#define SRE_OP_MARK 16 +#define SRE_OP_MAX_REPEAT 17 #define SRE_OP_MAX_REPEAT_ONE 18 #define SRE_OP_MIN_REPEAT 19 -#define SRE_OP_MIN_UNTIL 20 -#define SRE_OP_NOT_LITERAL 21 -#define SRE_OP_NOT_LITERAL_IGNORE 22 -#define SRE_OP_NEGATE 23 -#define SRE_OP_RANGE 24 -#define SRE_OP_REPEAT 25 +#define SRE_OP_NOT_LITERAL 20 +#define SRE_OP_NOT_LITERAL_IGNORE 21 +#define SRE_OP_NEGATE 22 +#define SRE_OP_RANGE 23 +#define SRE_OP_REPEAT 24 #define SRE_AT_BEGINNING 0 #define SRE_AT_BEGINNING_LINE 1 #define SRE_AT_BOUNDARY 2 @@ -39,11 +38,20 @@ #define SRE_CATEGORY_NOT_WORD 5 #define SRE_CATEGORY_LINEBREAK 6 #define SRE_CATEGORY_NOT_LINEBREAK 7 -#define SRE_CATEGORY_LOC_DIGIT 8 -#define SRE_CATEGORY_LOC_NOT_DIGIT 9 -#define SRE_CATEGORY_LOC_SPACE 10 -#define SRE_CATEGORY_LOC_NOT_SPACE 11 -#define SRE_CATEGORY_LOC_WORD 12 -#define SRE_CATEGORY_LOC_NOT_WORD 13 -#define SRE_CATEGORY_LOC_LINEBREAK 14 -#define SRE_CATEGORY_LOC_NOT_LINEBREAK 15 +#define SRE_CATEGORY_LOC_WORD 8 +#define SRE_CATEGORY_LOC_NOT_WORD 9 +#define SRE_CATEGORY_UNI_DIGIT 10 +#define SRE_CATEGORY_UNI_NOT_DIGIT 11 +#define SRE_CATEGORY_UNI_SPACE 12 +#define SRE_CATEGORY_UNI_NOT_SPACE 13 +#define SRE_CATEGORY_UNI_WORD 14 +#define SRE_CATEGORY_UNI_NOT_WORD 15 +#define SRE_CATEGORY_UNI_LINEBREAK 16 +#define SRE_CATEGORY_UNI_NOT_LINEBREAK 17 +#define SRE_FLAG_TEMPLATE 1 +#define SRE_FLAG_IGNORECASE 2 +#define SRE_FLAG_LOCALE 4 +#define SRE_FLAG_MULTILINE 8 +#define SRE_FLAG_DOTALL 16 +#define SRE_FLAG_UNICODE 32 +#define SRE_FLAG_VERBOSE 64 |