mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
gh-91870: Remove unsupported SRE opcode CALL (GH-91872)
It was initially added to support atomic groups, but that support was never fully implemented, and CALL was only left in the compiler, but not interpreter and parser. ATOMIC_GROUP is now used to support atomic groups.
This commit is contained in:
parent
1af871eeee
commit
f703c96cf0
6 changed files with 38 additions and 52 deletions
|
@ -164,12 +164,6 @@ def _compile(data, pattern, flags):
|
||||||
_compile(data, av[1], flags)
|
_compile(data, av[1], flags)
|
||||||
emit(SUCCESS)
|
emit(SUCCESS)
|
||||||
code[skip] = _len(code) - skip
|
code[skip] = _len(code) - skip
|
||||||
elif op is CALL:
|
|
||||||
emit(op)
|
|
||||||
skip = _len(code); emit(0)
|
|
||||||
_compile(data, av, flags)
|
|
||||||
emit(SUCCESS)
|
|
||||||
code[skip] = _len(code) - skip
|
|
||||||
elif op is AT:
|
elif op is AT:
|
||||||
emit(op)
|
emit(op)
|
||||||
if flags & SRE_FLAG_MULTILINE:
|
if flags & SRE_FLAG_MULTILINE:
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
# update when constants are added or removed
|
# update when constants are added or removed
|
||||||
|
|
||||||
MAGIC = 20220402
|
MAGIC = 20220423
|
||||||
|
|
||||||
from _sre import MAXREPEAT, MAXGROUPS
|
from _sre import MAXREPEAT, MAXGROUPS
|
||||||
|
|
||||||
|
@ -78,7 +78,6 @@ OPCODES = _makecodes(
|
||||||
'ASSERT', 'ASSERT_NOT',
|
'ASSERT', 'ASSERT_NOT',
|
||||||
'AT',
|
'AT',
|
||||||
'BRANCH',
|
'BRANCH',
|
||||||
'CALL',
|
|
||||||
'CATEGORY',
|
'CATEGORY',
|
||||||
'CHARSET', 'BIGCHARSET',
|
'CHARSET', 'BIGCHARSET',
|
||||||
'GROUPREF', 'GROUPREF_EXISTS',
|
'GROUPREF', 'GROUPREF_EXISTS',
|
||||||
|
|
|
@ -183,10 +183,6 @@ class SubPattern:
|
||||||
j = max(j, h)
|
j = max(j, h)
|
||||||
lo = lo + i
|
lo = lo + i
|
||||||
hi = hi + j
|
hi = hi + j
|
||||||
elif op is CALL:
|
|
||||||
i, j = av.getwidth()
|
|
||||||
lo = lo + i
|
|
||||||
hi = hi + j
|
|
||||||
elif op is ATOMIC_GROUP:
|
elif op is ATOMIC_GROUP:
|
||||||
i, j = av.getwidth()
|
i, j = av.getwidth()
|
||||||
lo = lo + i
|
lo = lo + i
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
* See the sre.c file for information on usage and redistribution.
|
* See the sre.c file for information on usage and redistribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SRE_MAGIC 20220402
|
#define SRE_MAGIC 20220423
|
||||||
#define SRE_OP_FAILURE 0
|
#define SRE_OP_FAILURE 0
|
||||||
#define SRE_OP_SUCCESS 1
|
#define SRE_OP_SUCCESS 1
|
||||||
#define SRE_OP_ANY 2
|
#define SRE_OP_ANY 2
|
||||||
|
@ -20,42 +20,41 @@
|
||||||
#define SRE_OP_ASSERT_NOT 5
|
#define SRE_OP_ASSERT_NOT 5
|
||||||
#define SRE_OP_AT 6
|
#define SRE_OP_AT 6
|
||||||
#define SRE_OP_BRANCH 7
|
#define SRE_OP_BRANCH 7
|
||||||
#define SRE_OP_CALL 8
|
#define SRE_OP_CATEGORY 8
|
||||||
#define SRE_OP_CATEGORY 9
|
#define SRE_OP_CHARSET 9
|
||||||
#define SRE_OP_CHARSET 10
|
#define SRE_OP_BIGCHARSET 10
|
||||||
#define SRE_OP_BIGCHARSET 11
|
#define SRE_OP_GROUPREF 11
|
||||||
#define SRE_OP_GROUPREF 12
|
#define SRE_OP_GROUPREF_EXISTS 12
|
||||||
#define SRE_OP_GROUPREF_EXISTS 13
|
#define SRE_OP_IN 13
|
||||||
#define SRE_OP_IN 14
|
#define SRE_OP_INFO 14
|
||||||
#define SRE_OP_INFO 15
|
#define SRE_OP_JUMP 15
|
||||||
#define SRE_OP_JUMP 16
|
#define SRE_OP_LITERAL 16
|
||||||
#define SRE_OP_LITERAL 17
|
#define SRE_OP_MARK 17
|
||||||
#define SRE_OP_MARK 18
|
#define SRE_OP_MAX_UNTIL 18
|
||||||
#define SRE_OP_MAX_UNTIL 19
|
#define SRE_OP_MIN_UNTIL 19
|
||||||
#define SRE_OP_MIN_UNTIL 20
|
#define SRE_OP_NOT_LITERAL 20
|
||||||
#define SRE_OP_NOT_LITERAL 21
|
#define SRE_OP_NEGATE 21
|
||||||
#define SRE_OP_NEGATE 22
|
#define SRE_OP_RANGE 22
|
||||||
#define SRE_OP_RANGE 23
|
#define SRE_OP_REPEAT 23
|
||||||
#define SRE_OP_REPEAT 24
|
#define SRE_OP_REPEAT_ONE 24
|
||||||
#define SRE_OP_REPEAT_ONE 25
|
#define SRE_OP_SUBPATTERN 25
|
||||||
#define SRE_OP_SUBPATTERN 26
|
#define SRE_OP_MIN_REPEAT_ONE 26
|
||||||
#define SRE_OP_MIN_REPEAT_ONE 27
|
#define SRE_OP_ATOMIC_GROUP 27
|
||||||
#define SRE_OP_ATOMIC_GROUP 28
|
#define SRE_OP_POSSESSIVE_REPEAT 28
|
||||||
#define SRE_OP_POSSESSIVE_REPEAT 29
|
#define SRE_OP_POSSESSIVE_REPEAT_ONE 29
|
||||||
#define SRE_OP_POSSESSIVE_REPEAT_ONE 30
|
#define SRE_OP_GROUPREF_IGNORE 30
|
||||||
#define SRE_OP_GROUPREF_IGNORE 31
|
#define SRE_OP_IN_IGNORE 31
|
||||||
#define SRE_OP_IN_IGNORE 32
|
#define SRE_OP_LITERAL_IGNORE 32
|
||||||
#define SRE_OP_LITERAL_IGNORE 33
|
#define SRE_OP_NOT_LITERAL_IGNORE 33
|
||||||
#define SRE_OP_NOT_LITERAL_IGNORE 34
|
#define SRE_OP_GROUPREF_LOC_IGNORE 34
|
||||||
#define SRE_OP_GROUPREF_LOC_IGNORE 35
|
#define SRE_OP_IN_LOC_IGNORE 35
|
||||||
#define SRE_OP_IN_LOC_IGNORE 36
|
#define SRE_OP_LITERAL_LOC_IGNORE 36
|
||||||
#define SRE_OP_LITERAL_LOC_IGNORE 37
|
#define SRE_OP_NOT_LITERAL_LOC_IGNORE 37
|
||||||
#define SRE_OP_NOT_LITERAL_LOC_IGNORE 38
|
#define SRE_OP_GROUPREF_UNI_IGNORE 38
|
||||||
#define SRE_OP_GROUPREF_UNI_IGNORE 39
|
#define SRE_OP_IN_UNI_IGNORE 39
|
||||||
#define SRE_OP_IN_UNI_IGNORE 40
|
#define SRE_OP_LITERAL_UNI_IGNORE 40
|
||||||
#define SRE_OP_LITERAL_UNI_IGNORE 41
|
#define SRE_OP_NOT_LITERAL_UNI_IGNORE 41
|
||||||
#define SRE_OP_NOT_LITERAL_UNI_IGNORE 42
|
#define SRE_OP_RANGE_UNI_IGNORE 42
|
||||||
#define SRE_OP_RANGE_UNI_IGNORE 43
|
|
||||||
#define SRE_AT_BEGINNING 0
|
#define SRE_AT_BEGINNING 0
|
||||||
#define SRE_AT_BEGINNING_LINE 1
|
#define SRE_AT_BEGINNING_LINE 1
|
||||||
#define SRE_AT_BEGINNING_STRING 2
|
#define SRE_AT_BEGINNING_STRING 2
|
||||||
|
|
|
@ -1547,7 +1547,6 @@ dispatch:
|
||||||
TARGET(SRE_OP_NEGATE):
|
TARGET(SRE_OP_NEGATE):
|
||||||
TARGET(SRE_OP_BIGCHARSET):
|
TARGET(SRE_OP_BIGCHARSET):
|
||||||
TARGET(SRE_OP_CHARSET):
|
TARGET(SRE_OP_CHARSET):
|
||||||
TARGET(SRE_OP_CALL):
|
|
||||||
TRACE(("|%p|%p|UNKNOWN %d\n", pattern, ptr,
|
TRACE(("|%p|%p|UNKNOWN %d\n", pattern, ptr,
|
||||||
pattern[-1]));
|
pattern[-1]));
|
||||||
RETURN_ERROR(SRE_ERROR_ILLEGAL);
|
RETURN_ERROR(SRE_ERROR_ILLEGAL);
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
* See the sre.c file for information on usage and redistribution.
|
* See the sre.c file for information on usage and redistribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void *sre_targets[44] = {
|
static void *sre_targets[43] = {
|
||||||
&&TARGET_SRE_OP_FAILURE,
|
&&TARGET_SRE_OP_FAILURE,
|
||||||
&&TARGET_SRE_OP_SUCCESS,
|
&&TARGET_SRE_OP_SUCCESS,
|
||||||
&&TARGET_SRE_OP_ANY,
|
&&TARGET_SRE_OP_ANY,
|
||||||
|
@ -20,7 +20,6 @@ static void *sre_targets[44] = {
|
||||||
&&TARGET_SRE_OP_ASSERT_NOT,
|
&&TARGET_SRE_OP_ASSERT_NOT,
|
||||||
&&TARGET_SRE_OP_AT,
|
&&TARGET_SRE_OP_AT,
|
||||||
&&TARGET_SRE_OP_BRANCH,
|
&&TARGET_SRE_OP_BRANCH,
|
||||||
&&TARGET_SRE_OP_CALL,
|
|
||||||
&&TARGET_SRE_OP_CATEGORY,
|
&&TARGET_SRE_OP_CATEGORY,
|
||||||
&&TARGET_SRE_OP_CHARSET,
|
&&TARGET_SRE_OP_CHARSET,
|
||||||
&&TARGET_SRE_OP_BIGCHARSET,
|
&&TARGET_SRE_OP_BIGCHARSET,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue