summaryrefslogtreecommitdiffstats
path: root/parser.l
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.l
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.l')
-rw-r--r--parser.l14
1 files changed, 9 insertions, 5 deletions
diff --git a/parser.l b/parser.l
index e0c0f2d5..d6840a9d 100644
--- a/parser.l
+++ b/parser.l
@@ -187,7 +187,7 @@ UANY {ASC}|{U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
UANYN {ASCN}|{U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
-%x SPECIAL NESTED REGEX REGCLASS STRLIT CHRLIT QSILIT
+%x SPECIAL NESTED REGEX STRLIT CHRLIT QSILIT
%%
@@ -420,10 +420,6 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
<REGEX>[/] {
- yy_pop_state();
- if (yy_top_state() == INITIAL
- || yy_top_state() == QSILIT)
- yy_pop_state();
yylval.chr = '/';
return '/';
}
@@ -567,3 +563,11 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
}
%%
+
+void end_of_regex(void)
+{
+ yy_pop_state();
+ if (yy_top_state() == INITIAL
+ || yy_top_state() == QSILIT)
+ yy_pop_state();
+}