Hi.
The code in atom() looks to me like it could use a little refactoring
and simplification. I suggest the diff below. With it both grep and gawk
still pass their tests.
Thanks,
Arnold
diff --git a/src/dfa.c b/src/dfa.c
index b79c604..d2916ee 100644
--- a/src/dfa.c
+++ b/src/dfa.c
@@ -1725,17 +1725,20 @@ add_utf8_anychar (void)
static void
atom (void)
{
- if (0)
+ if (MBS_SUPPORT && tok == WCHAR)
{
- /* empty */
- }
- else if (MBS_SUPPORT && tok == WCHAR)
- {
- addtok_wc (case_fold ? towlower (wctok) : wctok);
- if (case_fold && iswalpha (wctok))
+ if (! case_fold)
+ {
+ addtok_wc (wctok);
+ }
+ else
{
- addtok_wc (towupper (wctok));
- addtok (OR);
+ addtok_wc (towlower (wctok));
+ if (iswalpha (wctok))
+ {
+ addtok_wc (towupper (wctok));
+ addtok (OR);
+ }
}
tok = lex ();