summaryrefslogtreecommitdiffstats
path: root/parser.l
diff options
context:
space:
mode:
Diffstat (limited to 'parser.l')
-rw-r--r--parser.l15
1 files changed, 15 insertions, 0 deletions
diff --git a/parser.l b/parser.l
index 5919f929..b15f5ad1 100644
--- a/parser.l
+++ b/parser.l
@@ -399,6 +399,11 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
yyerrorf("bad character in directive: '%s'", yytext);
}
+<SPECIAL,NESTED>. {
+ yyerrorf("non-UTF-8 byte in directive: '\\x%02x'",
+ (unsigned char) yytext[0]);
+ }
+
<REGEX>[/] {
yy_pop_state();
if (yy_top_state() == INITIAL
@@ -452,6 +457,11 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return REGCHAR;
}
+<REGEX>. {
+ yyerrorf("non-UTF-8 byte in regex: '\\x%02x'",
+ (unsigned char) yytext[0]);
+ }
+
<INITIAL>({UONLY}|[^@\n])+ {
yylval.lexeme = utf8_dup_from(yytext);
return TEXT;
@@ -536,4 +546,9 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return LITCHAR;
}
+<STRLIT,CHRLIT,QSILIT>. {
+ yyerrorf("non-UTF-8 byte in literal: '\\x%02x'",
+ (unsigned char) yytext[0]);
+ }
+
%%