FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Modules/_sre/sre.h at main · python/cpython · GitHub
python
cpython
Repository navigation
Code
Issues
5k+
(5k+)
Pull requests
2.7k
(2.7k)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Modules
/
_sre
/
sre.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
127 lines (116 loc) · 3.82 KB
Breadcrumbs
cpython
/
Modules
/
_sre
/
sre.h
Copy path
File metadata and controls
127 lines (116 loc) · 3.82 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*
* Secret Labs' Regular Expression Engine
*
* regular expression matching engine
*
* Copyright (c) 1997-2001 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"
/* size of a code word (must be unsigned short or larger, and
large enough to hold a UCS4 character) */
#define
SRE_CODE
Py_UCS4
#if
SIZEOF_SIZE_T
>
4
# define
SRE_MAXREPEAT
(~(SRE_CODE)0)
# define
SRE_MAXGROUPS
((SRE_CODE)INT32_MAX / 2)
#else
# define
SRE_MAXREPEAT
((SRE_CODE)PY_SSIZE_T_MAX)
# define
SRE_MAXGROUPS
((SRE_CODE)PY_SSIZE_T_MAX / SIZEOF_VOID_P / 2)
#endif
typedef
struct
{
PyObject_VAR_HEAD
Py_ssize_t
groups
;
/* must be first! */
PyObject
*
groupindex
;
/* dict */
PyObject
*
indexgroup
;
/* tuple */
/* compatibility */
PyObject
*
pattern
;
/* pattern source (or None) */
int
flags
;
/* flags used when compiling pattern source */
PyObject
*
weakreflist
;
/* List of weak references */
int
isbytes
;
/* pattern type (1 - bytes, 0 - string, -1 - None) */
#ifdef
Py_DEBUG
/* for simulation of user interruption */
int
fail_after_count
;
PyObject
*
fail_after_exc
;
#endif
/* pattern code */
Py_ssize_t
codesize
;
SRE_CODE
code
[
1
];
}
PatternObject
;
#define
PatternObject_GetCode
(
o
) (((PatternObject*)(o))->code)
typedef
struct
{
PyObject_VAR_HEAD
PyObject
*
string
;
/* link to the target string (must be first) */
PyObject
*
regs
;
/* cached list of matching spans */
PatternObject
*
pattern
;
/* link to the regex (pattern) object */
Py_ssize_t
pos
,
endpos
;
/* current target slice */
Py_ssize_t
lastindex
;
/* last index marker seen by the engine (-1 if none) */
Py_ssize_t
groups
;
/* number of groups (start/end marks) */
Py_ssize_t
mark
[
1
];
}
MatchObject
;
typedef
struct
{
PyObject_VAR_HEAD
Py_ssize_t
chunks
;
/* the number of group references and non-NULL literals
* self->chunks <= 2*Py_SIZE(self) + 1 */
PyObject
*
literal
;
struct
{
Py_ssize_t
index
;
PyObject
*
literal
;
/* NULL if empty */
}
items
[
0
];
}
TemplateObject
;
typedef
struct
SRE_REPEAT_T
{
Py_ssize_t
count
;
const
SRE_CODE
*
pattern
;
/* points to REPEAT operator arguments */
const
void
*
last_ptr
;
/* helper to check for infinite loops */
struct
SRE_REPEAT_T
*
prev
;
/* points to previous repeat context */
/* for SRE_REPEAT pool */
struct
SRE_REPEAT_T
*
pool_prev
;
struct
SRE_REPEAT_T
*
pool_next
;
}
SRE_REPEAT
;
typedef
struct
{
/* string pointers */
const
void
*
ptr
;
/* current position (also end of current slice) */
const
void
*
beginning
;
/* start of original string */
const
void
*
start
;
/* start of current slice */
const
void
*
end
;
/* end of original string */
/* attributes for the match object */
PyObject
*
string
;
Py_buffer
buffer
;
Py_ssize_t
pos
,
endpos
;
int
isbytes
;
int
charsize
;
/* character size */
int
match_all
;
int
must_advance
;
int
debug
;
/* marks */
int
lastmark
;
int
lastindex
;
const
void
*
*
mark
;
int
save_marks
;
/* if nonzero, save and restore mark values on
backtracking instead of only rewinding the lastmark
index; counts enclosing repeat contexts and
possessive bodies */
/* dynamically allocated stuff */
char
*
data_stack
;
size_t
data_stack_size
;
size_t
data_stack_base
;
/* current repeat context */
SRE_REPEAT
*
repeat
;
/* SRE_REPEAT pool */
SRE_REPEAT
*
repeat_pool_used
;
SRE_REPEAT
*
repeat_pool_unused
;
unsigned
int
sigcount
;
#ifdef
Py_DEBUG
int
fail_after_count
;
PyObject
*
fail_after_exc
;
#endif
}
SRE_STATE
;
typedef
struct
{
PyObject_HEAD
PatternObject
*
pattern
;
SRE_STATE
state
;
int
executing
;
}
ScannerObject
;
#endif
Back
|
FazBrowse Home
|
New Git URL