summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parser.l13
1 files changed, 12 insertions, 1 deletions
diff --git a/parser.l b/parser.l
index e310d1f7..778c632a 100644
--- a/parser.l
+++ b/parser.l
@@ -836,6 +836,10 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return TEXT;
}
+<SPECIAL>[\\]x {
+ yyerrorf(yyg, lit("\\x escape without digits"), nao);
+}
+
<SPECIAL>[\\]. {
yyerrorf(yyg, lit("unrecognized escape \\~a"), chr(yytext[1]), nao);
}
@@ -919,7 +923,10 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return REGCHAR;
}
- yyerrprepf(yyg, lit("unrecognized escape in regex"), nao);
+ if (yytext[1] == 'x')
+ yyerrprepf(yyg, lit("\\x escape without digits in regex"), nao);
+ else
+ yyerrprepf(yyg, lit("unrecognized escape in regex"), nao);
return ERRTOK;
}
@@ -1021,6 +1028,10 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return LITCHAR;
}
+<STRLIT,QSILIT,WLIT,QWLIT>[\\]x {
+ yyerrorf(yyg, lit("\\x escape without digits"), nao);
+}
+
<STRLIT,QSILIT,WLIT,QWLIT>[\\]. {
yyerrorf(yyg, lit("unrecognized escape: \\~a"), chr(yytext[1]), nao);
}