-        if (yytext[i] == '\\')
-            // XXX: support more line continuation characters
-            if (false) line: {
-                yylloc->end.lines(1);
-                yylloc->end.columns(yyleng - i);
-            } else switch (next = yytext[++i]) {
-                case '\n': goto line;
-
-                case '\\': next = '\\'; break;
-                case '\'': next = '\''; break;
-                case '"': next = '"'; break;
-                case 'b': next = '\b'; break;
-                case 'f': next = '\f'; break;
-                case 'n': next = '\n'; break;
-                case 'r': next = '\r'; break;
-                case 't': next = '\t'; break;
-                case 'v': next = '\v'; break;
-
-                case '0': case '1': case '2': case '3':
-                    if (yytext[i + 1] < '0' || yytext[i + 1] > '7')
-                        next = H(yytext[i]), i += 0;
-                    else if (yytext[i + 2] < '0' || yytext[i + 2] > '7')
-                        next = H(yytext[i]) << 3 | H(yytext[i + 1]), i += 1;
-                    else
-                        next = H(yytext[i]) << 6 | H(yytext[i + 1]) << 3 | H(yytext[i + 2]), i += 2;
-                break;
+<StrictAccentString>{
+    "`" R CYLexBufferEnd(string, String, yyextra->tail_ ? tk::TemplateTail : tk::NoSubstitutionTemplate, hi::Constant);
+    "${" R yyextra->template_.push(true); CYLexBufferEnd(string, String, yyextra->tail_ ? tk::TemplateMiddle : tk::TemplateHead, hi::Constant);