Add support for "%g" character class in patterns (from Lua 5.2).

This commit is contained in:
Mike Pall 2010-11-19 18:37:10 +01:00
parent 7cc981c140
commit 52fd87bf34
2 changed files with 5 additions and 3 deletions

View File

@ -181,9 +181,9 @@ static const char *classend(MatchState *ms, const char *p)
} }
static const unsigned char match_class_map[32] = { static const unsigned char match_class_map[32] = {
0, LJ_CHAR_ALPHA, 0, LJ_CHAR_CNTRL, LJ_CHAR_DIGIT, 0,0,0,0,0,0,0, 0,LJ_CHAR_ALPHA,0,LJ_CHAR_CNTRL,LJ_CHAR_DIGIT,0,0,LJ_CHAR_GRAPH,0,0,0,0,
LJ_CHAR_LOWER, 0,0,0, LJ_CHAR_PUNCT, 0,0, LJ_CHAR_SPACE, 0, LJ_CHAR_LOWER,0,0,0,LJ_CHAR_PUNCT,0,0,LJ_CHAR_SPACE,0,
LJ_CHAR_UPPER, 0, LJ_CHAR_ALNUM, LJ_CHAR_XDIGIT, 0,0,0,0,0,0,0 LJ_CHAR_UPPER,0,LJ_CHAR_ALNUM,LJ_CHAR_XDIGIT,0,0,0,0,0,0,0
}; };
static int match_class(int c, int cl) static int match_class(int c, int cl)

View File

@ -18,6 +18,7 @@
#define LJ_CHAR_IDENT 0x80 #define LJ_CHAR_IDENT 0x80
#define LJ_CHAR_ALPHA (LJ_CHAR_LOWER|LJ_CHAR_UPPER) #define LJ_CHAR_ALPHA (LJ_CHAR_LOWER|LJ_CHAR_UPPER)
#define LJ_CHAR_ALNUM (LJ_CHAR_ALPHA|LJ_CHAR_DIGIT) #define LJ_CHAR_ALNUM (LJ_CHAR_ALPHA|LJ_CHAR_DIGIT)
#define LJ_CHAR_GRAPH (LJ_CHAR_ALNUM|LJ_CHAR_PUNCT)
/* Only pass -1 or 0..255 to these macros. Never pass a signed char! */ /* Only pass -1 or 0..255 to these macros. Never pass a signed char! */
#define lj_char_isa(c, t) (lj_char_bits[(c)+1] & t) #define lj_char_isa(c, t) (lj_char_bits[(c)+1] & t)
@ -31,6 +32,7 @@
#define lj_char_isident(c) lj_char_isa((c), LJ_CHAR_IDENT) #define lj_char_isident(c) lj_char_isa((c), LJ_CHAR_IDENT)
#define lj_char_isalpha(c) lj_char_isa((c), LJ_CHAR_ALPHA) #define lj_char_isalpha(c) lj_char_isa((c), LJ_CHAR_ALPHA)
#define lj_char_isalnum(c) lj_char_isa((c), LJ_CHAR_ALNUM) #define lj_char_isalnum(c) lj_char_isa((c), LJ_CHAR_ALNUM)
#define lj_char_isgraph(c) lj_char_isa((c), LJ_CHAR_GRAPH)
#define lj_char_toupper(c) ((c) - (lj_char_islower(c) >> 1)) #define lj_char_toupper(c) ((c) - (lj_char_islower(c) >> 1))
#define lj_char_tolower(c) ((c) + lj_char_isupper(c)) #define lj_char_tolower(c) ((c) + lj_char_isupper(c))