aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2010-11-19 18:37:10 +0100
committerMike Pall <mike>2010-11-19 18:37:10 +0100
commit52fd87bf348715c13b469fd32b2b56d3bfe1d1f9 (patch)
treecdb4725e0176a4db9715fe1aa9ca87baafb95cce
parent7cc981c14067d4b0e774a6bfb0acfc2f5c911f0d (diff)
downloadluajit-52fd87bf348715c13b469fd32b2b56d3bfe1d1f9.tar.gz
luajit-52fd87bf348715c13b469fd32b2b56d3bfe1d1f9.tar.bz2
luajit-52fd87bf348715c13b469fd32b2b56d3bfe1d1f9.zip
Add support for "%g" character class in patterns (from Lua 5.2).
-rw-r--r--src/lib_string.c6
-rw-r--r--src/lj_char.h2
2 files changed, 5 insertions, 3 deletions
diff --git a/src/lib_string.c b/src/lib_string.c
index c64baed5..23ef70f9 100644
--- a/src/lib_string.c
+++ b/src/lib_string.c
@@ -181,9 +181,9 @@ static const char *classend(MatchState *ms, const char *p)
181} 181}
182 182
183static const unsigned char match_class_map[32] = { 183static const unsigned char match_class_map[32] = {
184 0, LJ_CHAR_ALPHA, 0, LJ_CHAR_CNTRL, LJ_CHAR_DIGIT, 0,0,0,0,0,0,0, 184 0,LJ_CHAR_ALPHA,0,LJ_CHAR_CNTRL,LJ_CHAR_DIGIT,0,0,LJ_CHAR_GRAPH,0,0,0,0,
185 LJ_CHAR_LOWER, 0,0,0, LJ_CHAR_PUNCT, 0,0, LJ_CHAR_SPACE, 0, 185 LJ_CHAR_LOWER,0,0,0,LJ_CHAR_PUNCT,0,0,LJ_CHAR_SPACE,0,
186 LJ_CHAR_UPPER, 0, LJ_CHAR_ALNUM, LJ_CHAR_XDIGIT, 0,0,0,0,0,0,0 186 LJ_CHAR_UPPER,0,LJ_CHAR_ALNUM,LJ_CHAR_XDIGIT,0,0,0,0,0,0,0
187}; 187};
188 188
189static int match_class(int c, int cl) 189static int match_class(int c, int cl)
diff --git a/src/lj_char.h b/src/lj_char.h
index d474285c..7b7c1322 100644
--- a/src/lj_char.h
+++ b/src/lj_char.h
@@ -18,6 +18,7 @@
18#define LJ_CHAR_IDENT 0x80 18#define LJ_CHAR_IDENT 0x80
19#define LJ_CHAR_ALPHA (LJ_CHAR_LOWER|LJ_CHAR_UPPER) 19#define LJ_CHAR_ALPHA (LJ_CHAR_LOWER|LJ_CHAR_UPPER)
20#define LJ_CHAR_ALNUM (LJ_CHAR_ALPHA|LJ_CHAR_DIGIT) 20#define LJ_CHAR_ALNUM (LJ_CHAR_ALPHA|LJ_CHAR_DIGIT)
21#define LJ_CHAR_GRAPH (LJ_CHAR_ALNUM|LJ_CHAR_PUNCT)
21 22
22/* Only pass -1 or 0..255 to these macros. Never pass a signed char! */ 23/* Only pass -1 or 0..255 to these macros. Never pass a signed char! */
23#define lj_char_isa(c, t) (lj_char_bits[(c)+1] & t) 24#define lj_char_isa(c, t) (lj_char_bits[(c)+1] & t)
@@ -31,6 +32,7 @@
31#define lj_char_isident(c) lj_char_isa((c), LJ_CHAR_IDENT) 32#define lj_char_isident(c) lj_char_isa((c), LJ_CHAR_IDENT)
32#define lj_char_isalpha(c) lj_char_isa((c), LJ_CHAR_ALPHA) 33#define lj_char_isalpha(c) lj_char_isa((c), LJ_CHAR_ALPHA)
33#define lj_char_isalnum(c) lj_char_isa((c), LJ_CHAR_ALNUM) 34#define lj_char_isalnum(c) lj_char_isa((c), LJ_CHAR_ALNUM)
35#define lj_char_isgraph(c) lj_char_isa((c), LJ_CHAR_GRAPH)
34 36
35#define lj_char_toupper(c) ((c) - (lj_char_islower(c) >> 1)) 37#define lj_char_toupper(c) ((c) - (lj_char_islower(c) >> 1))
36#define lj_char_tolower(c) ((c) + lj_char_isupper(c)) 38#define lj_char_tolower(c) ((c) + lj_char_isupper(c))