summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2011-01-09 16:08:11 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2011-01-09 16:08:11 (GMT)
commit8bf2099ca0eeea4f94a1b75a66035cd28cd3fa7f (patch)
tree64ffd441e9f1aca5c3e0b4181c9dfaf11b51cfff
parentd96fedc5295922a717635a4f296a4d226b8c2431 (diff)
This adds support for escape sequences in strings e.g \t \n \r \" \\
git-svn-id: http://svn.clifford.at/openscad/trunk@581 b57f626f-c46c-0410-a088-ec61d464b74c
-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