2014-08-29 57 views
0

我正在構建Lexer。我在使用轉義字符的字符串文字中遇到問題。這是我的lex代碼。閱讀帶轉義字符的字符串

string L?\"(\\.|[^\\"])*\" 
{string} { 
      int len;len = strlen(yytext); 
      yylval.string = strdup(yytext + 1); 
      yylval.string[len - 2] = 0;return MYSTRING; 
      } 

這是我的解析器代碼。

tname1="xxxx\"s"; 
print tname1; 

當我打印字符串,它是打印類似

XXXX \ 「S

但我想要的結果爲XXXX」 s,而不是XXXX \「s。即使它也不適用於製表符和換行符,我該如何修復它?

+2

您必須掃描剛剛閱讀的字符串,並用它們表示的內容替換轉義序列。你覺得什麼魔術可以爲你做?順便說一下,'len = strlen(yytext)'是沒有必要的。 'yyleng'總是令牌的長度。 – rici 2014-08-29 06:57:09

回答