summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--parser.l6
2 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index feb36da0..e963e8af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2015-06-26 Kaz Kylheku <kaz@kylheku.com>
+ Third round of quasiliteral-related fixes.
+
+ * parser.l (char_esc): Recognize \@ escape.
+ (grammar): Add a rule for a \@ escape in quasiliterals,
+ and quasi word list literals.
+
+2015-06-26 Kaz Kylheku <kaz@kylheku.com>
+
Second round of quasiliteral-related fixes.
* parser.l: Only shift to QSPECIAL state when @ is followed
diff --git a/parser.l b/parser.l
index 7ec31991..37bbdc70 100644
--- a/parser.l
+++ b/parser.l
@@ -142,6 +142,7 @@ static wchar_t char_esc(int letter)
case '\'': return L'\'';
case '`': return L'`';
case '/': return L'/';
+ case '@': return L'@';
case '\\': return L'\\';
}
@@ -841,6 +842,11 @@ UONLY {U2}{U}|{U3}{U}{U}|{U4}{U}{U}{U}
return LITCHAR;
}
+<QSILIT,QWLIT>[\\]@ {
+ yylval->chr = char_esc(yytext[1]);
+ return LITCHAR;
+}
+
<STRLIT,QSILIT,WLIT,QWLIT>{WS}[\\]\n{WS} {
yyextra->lineno++;
}