From e2ae2a714d623473b7e85c32b22a08156f461d77 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Wed, 17 Nov 2010 21:27:10 +0000 Subject: This adds support for escape sequences in strings e.g \t \n \r \" \\ 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? -- cgit v0.10.1