diff options
author | Giles Bathgate <gilesbathgate@gmail.com> | 2010-11-17 21:27:10 (GMT) |
---|---|---|
committer | Giles Bathgate <gilesbathgate@gmail.com> | 2010-11-17 21:27:10 (GMT) |
commit | e2ae2a714d623473b7e85c32b22a08156f461d77 (patch) | |
tree | 64ffd441e9f1aca5c3e0b4181c9dfaf11b51cfff /src/lexer.l | |
parent | 183b3f9cb9841820f52f2aa3af258e19d3269806 (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.l | 14 |
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? |