summaryrefslogtreecommitdiff
path: root/src/lexer.l
diff options
context:
space:
mode:
authorGiles Bathgate <gilesbathgate@gmail.com>2010-11-17 21:27:10 (GMT)
committerGiles Bathgate <gilesbathgate@gmail.com>2010-11-17 21:27:10 (GMT)
commite2ae2a714d623473b7e85c32b22a08156f461d77 (patch)
tree64ffd441e9f1aca5c3e0b4181c9dfaf11b51cfff /src/lexer.l
parent183b3f9cb9841820f52f2aa3af258e19d3269806 (diff)
This adds support for escape sequences in strings e.g \t \n \r \" \\
Diffstat (limited to 'src/lexer.l')
-rw-r--r--src/lexer.l14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lexer.l b/src/lexer.l
index 49243fd..b949169 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -140,11 +140,15 @@ use[ \t\r\n>]*"<"[^ \t\r\n>]+">" {
{DIGIT}+|{DIGIT}*\.{DIGIT}+|{DIGIT}+\.{DIGIT}* { parserlval.number = QString(yytext).toDouble(); return TOK_NUMBER; }
"$"?[a-zA-Z0-9_]+ { parserlval.text = strdup(yytext); return TOK_ID; }
-\"[^"]*\" {
- parserlval.text = strdup(yytext+1);
- parserlval.text[strlen(parserlval.text)-1] = 0;
- return TOK_STRING;
-}
+\"(\\[tnr\"\\]|[^\\"])*\" { QString str(yytext+1);
+ str.chop(1);
+ str=str.replace("\\\\","\\");
+ str=str.replace("\\\"","\"");
+ str=str.replace("\\t","\t");
+ str=str.replace("\\n","\n");
+ str=str.replace("\\r","\r");
+ parserlval.text = strdup(str.toAscii().data());
+ return TOK_STRING; }
[\n\r\t ]
\/\/[^\n]*\n?
contact: Jan Huwald // Impressum