Adding Fredrik Lundh's _sre.c module and its header files.

NOTE: THIS IS VERY ROUGH ALPHA CODE!
This commit is contained in:
Guido van Rossum 2000-03-31 14:59:30 +00:00
parent 7627c0de69
commit b700df9824
3 changed files with 1518 additions and 0 deletions

1453
Modules/_sre.c Normal file

File diff suppressed because it is too large Load Diff

38
Modules/sre.h Normal file
View File

@ -0,0 +1,38 @@
/*
* Secret Labs' Regular Expression Engine
* $Id$
*
* simple regular expression matching engine
*
* Copyright (c) 1997-2000 by Secret Labs AB. All rights reserved.
*
* See the _sre.c file for information on usage and redistribution.
*/
#ifndef SRE_INCLUDED
#define SRE_INCLUDED
#include "sre_constants.h"
/* Python objects */
typedef struct {
PyObject_HEAD
PyObject* code; /* link to the code string object */
PyObject* pattern; /* link to the pattern source (or None) */
int groups;
PyObject* groupindex;
} PatternObject;
#define PatternObject_GetCode(o) ((void*) PyString_AS_STRING((o)->code))
typedef struct {
PyObject_HEAD
PyObject* string; /* link to the target string */
PatternObject* pattern; /* link to the regex (pattern) object */
int groups; /* number of groups (start/end marks) */
int mark[2];
} MatchObject;
#endif

27
Modules/sre_constants.h Normal file
View File

@ -0,0 +1,27 @@
/* generated by sre_constants.py */
#define SRE_OP_FAILURE 0
#define SRE_OP_SUCCESS 1
#define SRE_OP_ANY 2
#define SRE_OP_ASSERT 3
#define SRE_OP_AT 4
#define SRE_OP_BRANCH 5
#define SRE_OP_CALL 6
#define SRE_OP_CATEGORY 7
#define SRE_OP_GROUP 8
#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_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