mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 12:10:13 +01:00
lib/re1.5: Add support for named classes in class sets.
Total code size change of this and previous commit:
bare-arm: +0 +0.000%
minimal x86: +0 +0.000%
unix x64: +32 +0.004% standard
stm32: +24 +0.006% PYBV10
cc3200: +16 +0.009%
esp8266: +20 +0.003% GENERIC
esp32: +44 +0.003% GENERIC[incl +8(data)]
mimxrt: +32 +0.009% TEENSY40
renesas-ra: +24 +0.004% RA6M2_EK
nrf: +0 +0.000% pca10040
rp2: +24 +0.005% PICO
samd: +32 +0.012% ADAFRUIT_ITSYBITSY_M4_EXPRESS
Addresses issue #7920.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -66,14 +66,21 @@ static const char *_compilecode(const char *re, ByteProg *prog, int sizecode)
|
||||
PC++; // Skip # of pair byte
|
||||
prog->len++;
|
||||
for (cnt = 0; *re != ']'; re++, cnt++) {
|
||||
if (*re == '\\') {
|
||||
char c = *re;
|
||||
if (c == '\\') {
|
||||
++re;
|
||||
c = *re;
|
||||
if (MATCH_NAMED_CLASS_CHAR(c)) {
|
||||
c = RE15_CLASS_NAMED_CLASS_INDICATOR;
|
||||
goto emit_char_pair;
|
||||
}
|
||||
}
|
||||
if (!*re) return NULL;
|
||||
EMIT(PC++, *re);
|
||||
if (!c) return NULL;
|
||||
if (re[1] == '-' && re[2] != ']') {
|
||||
re += 2;
|
||||
}
|
||||
emit_char_pair:
|
||||
EMIT(PC++, c);
|
||||
EMIT(PC++, *re);
|
||||
}
|
||||
EMIT_CHECKED(term + 1, cnt);
|
||||
|
||||
Reference in New Issue
Block a user