Parsing 读取带转义字符的字符串

Parsing 读取带转义字符的字符串,parsing,escaping,flex-lexer,Parsing,Escaping,Flex Lexer,我正在建造一个Lexer。我在字符串文字和转义字符方面有问题。这是我的莱克斯密码 string L?\"(\\.|[^\\"])*\" {string} { int len;len = strlen(yytext); yylval.string = strdup(yytext + 1); yylval.string[len - 2] = 0;return MYSTRING; } 这是

我正在建造一个Lexer。我在字符串文字和转义字符方面有问题。这是我的莱克斯密码

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。即使它对制表符和换行符也不起作用。如何修复它?

(最好的答案是@rici的评论。复制到这里作为答案。请参阅)


你必须扫描刚刚读过的字符串,并用它们所代表的内容替换转义序列。你认为有什么魔力可以帮你做到这一点呢?顺便问一下,len=strlen(yytext)没有必要。yyleng始终是令牌的长度。

您必须扫描刚刚读取的字符串,并用它们所代表的内容替换转义序列。您认为有什么魔力可以为您做到这一点?顺便说一下,
len=strlen(yytext)
不是必需的。
yyleng
始终是令牌的长度。