Parsing 读取带转义字符的字符串
我正在建造一个Lexer。我在字符串文字和转义字符方面有问题。这是我的莱克斯密码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; } 这是
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
始终是令牌的长度。