summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parser.y6
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e023e2f6..dcdd303b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-17 Kaz Kylheku <kkylheku@gmail.com>
+
+ * parser.y (regterm, regclass): Relocate handling
+ of empty [] into regterm, via empty derivation.
+
2010-01-16 Kaz Kylheku <kkylheku@gmail.com>
Regex syntactic tweaks: support the [] syntax
diff --git a/parser.y b/parser.y
index a3154201..db3ff2c7 100644
--- a/parser.y
+++ b/parser.y
@@ -469,9 +469,8 @@ regbranch : regterm { $$ = cons($1, nil); }
;
regterm : '[' regclass ']' { $$ = cons(set_s, $2); }
- | '[' ']' { $$ = cons(set_s, nil); }
- | '[' '^' regclass ']' { $$ = cons(cset_s, $3); }
- | '[' '^' ']' { $$ = wild_s; }
+ | '[' '^' regclass ']' { $$ = if3(nullp($3), wild_s,
+ cons(cset_s, $3)); }
| '.' { $$ = wild_s; }
| '^' { $$ = chr('^'); }
| ']' { $$ = chr(']'); }
@@ -492,6 +491,7 @@ regterm : '[' regclass ']' { $$ = cons(set_s, $2); }
regclass : regclassterm { $$ = cons($1, nil); }
| regclassterm regclass { $$ = cons($1, $2); }
+ | /* empty */ { $$ = nil; }
;
regclassterm : regrange { $$ = $1; }