summaryrefslogtreecommitdiffstats
path: root/parser.y
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2010-01-13 18:03:52 -0800
committerKaz Kylheku <kaz@kylheku.com>2010-01-13 18:03:52 -0800
commitf50d67df2057c2cd1d26668f47bc604338ce33f0 (patch)
tree914ab33a490947a41b72a98d2b7d7450f83d6f0e /parser.y
parent1fedfc67446065a4b00eb194505eed5e15851811 (diff)
downloadtxr-f50d67df2057c2cd1d26668f47bc604338ce33f0.tar.gz
txr-f50d67df2057c2cd1d26668f47bc604338ce33f0.tar.bz2
txr-f50d67df2057c2cd1d26668f47bc604338ce33f0.zip
Bugfix: allow unescaped / to be used in regex character classes.
Diffstat (limited to 'parser.y')
-rw-r--r--parser.y6
1 files changed, 4 insertions, 2 deletions
diff --git a/parser.y b/parser.y
index e8be187d..a7773c08 100644
--- a/parser.y
+++ b/parser.y
@@ -449,9 +449,10 @@ expr : IDENT { $$ = intern(string_own($1), nil); }
| quasilit { $$ = $1; }
;
-regex : '/' regexpr '/' { $$ = $2; }
+regex : '/' regexpr '/' { $$ = $2; end_of_regex(); }
| '/' error { $$ = nil;
- yybadtoken(yychar, lit("regex")); }
+ yybadtoken(yychar, lit("regex"));
+ end_of_regex(); }
;
regexpr : regbranch { $$ = if3(cdr($1),
@@ -504,6 +505,7 @@ regchar : '?' { $$ = '?'; }
| ')' { $$ = ')'; }
| '^' { $$ = '^'; }
| '|' { $$ = '|'; }
+ | '/' { $$ = '/'; }
| REGCHAR { $$ = $1; }
;