about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/lexer.l12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l
index 23a14324f32c..cf90f2939d24 100644
--- a/src/libexpr/lexer.l
+++ b/src/libexpr/lexer.l
@@ -128,6 +128,18 @@ inherit     { return INHERIT; }
                    yylval->t = makeIndStr(toATerm(yytext));
                    return IND_STR;
                  }
+<IND_STRING>\'\'\$ {
+                   yylval->t = makeIndStr(toATerm("$"));
+                   return IND_STR;
+                 }
+<IND_STRING>\'\'\' {
+                   yylval->t = makeIndStr(toATerm("''"));
+                   return IND_STR;
+                 }
+<IND_STRING>\'\'\\. {
+                   yylval->t = unescapeStr(yytext + 2);
+                   return IND_STR;
+                 }
 <IND_STRING>\$\{ { BEGIN(INITIAL); return DOLLAR_CURLY; }
 <IND_STRING>\'\' { BEGIN(INITIAL); return IND_STRING_CLOSE; }
 <IND_STRING>.    return yytext[0]; /* just in case: shouldn't be reached */