From 4bd8f3a5d5bfe7c922c94e2bc66c93a230f17496 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Tue, 26 Jun 2018 20:43:48 -0700 Subject: [PATCH] fix for handling [:(lower|upper):] in case-insensitive patterns --- src/re-scan.l | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/re-scan.l b/src/re-scan.l index 70bafd5649..d952ca2fd1 100644 --- a/src/re-scan.l +++ b/src/re-scan.l @@ -36,6 +36,8 @@ static int my_isprint(int c) { return isprint(c); } static int my_ispunct(int c) { return ispunct(c); } static int my_isspace(int c) { return isspace(c); } static int my_isxdigit(int c) { return isxdigit(c); } + +static int my_is_letter(int c) { return my_islower(c) || my_isupper(c); } %} %option caseless nodefault nostdinit noyywrap @@ -168,15 +170,22 @@ CCL_EXPR ("[:"[[:alpha:]]+":]") "[:cntrl:]" RET_CCE(my_iscntrl) "[:digit:]" RET_CCE(my_isdigit) "[:graph:]" RET_CCE(my_isgraph) - "[:lower:]" RET_CCE(my_islower) "[:print:]" RET_CCE(my_isprint) "[:punct:]" RET_CCE(my_ispunct) "[:space:]" RET_CCE(my_isspace) "[:xdigit:]" RET_CCE(my_isxdigit) + + "[:lower:]" { + BEGIN(SC_CCL); + yylval.cce_val = + case_insensitive ? my_is_letter : my_islower; + return TOK_CCE; + } + "[:upper:]" { BEGIN(SC_CCL); yylval.cce_val = - case_insensitive ? my_islower : my_isupper; + case_insensitive ? my_is_letter : my_isupper; return TOK_CCE; }