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。即使它也不適用於製表符和換行符,我該如何修復它?
您必須掃描剛剛閱讀的字符串,並用它們表示的內容替換轉義序列。你覺得什麼魔術可以爲你做?順便說一下,'len = strlen(yytext)'是沒有必要的。 'yyleng'總是令牌的長度。 – rici 2014-08-29 06:57:09