diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-10-16 13:56:13 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-10-17 22:25:18 +0300 |
commit | 297d8469b8fcaa072630c9561695edb001d96232 (patch) | |
tree | 04e7bfb9ddb60a8a8b84feb59c95c9d7cf4627b4 /extmod/re1.5/compilecode.c | |
parent | 391db8669b77e50eebe4d1583749430a3549fab7 (diff) | |
download | micropython-297d8469b8fcaa072630c9561695edb001d96232.tar.gz micropython-297d8469b8fcaa072630c9561695edb001d96232.zip |
modure: Update to re1.5 v0.6.1, fixed and extended character class support.
Diffstat (limited to 'extmod/re1.5/compilecode.c')
-rw-r--r-- | extmod/re1.5/compilecode.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/extmod/re1.5/compilecode.c b/extmod/re1.5/compilecode.c index a7942b1216..2ed38d02c3 100644 --- a/extmod/re1.5/compilecode.c +++ b/extmod/re1.5/compilecode.c @@ -48,6 +48,7 @@ int re1_5_sizecode(const char *re) case '[': { pc += 2; re++; + if (*re == '^') re++; while (*re != ']') { if (!*re) return -1; if (re[1] == '-') { @@ -91,10 +92,15 @@ const char *_compilecode(const char *re, ByteProg *prog) case '[': { int cnt; term = pc; - EMIT(pc++, Class); + re++; + if (*re == '^') { + EMIT(pc++, ClassNot); + re++; + } else { + EMIT(pc++, Class); + } pc++; // Skip # of pair byte prog->len++; - re++; for (cnt = 0; *re != ']'; re++, cnt++) { if (!*re) return NULL; EMIT(pc++, *re); |