我正在构建一个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而不是xxxx \ s。即使它也不适用于制表符和换行符。我该如何解决?
答案 0 :(得分:0)
(最好的答案在@rici的评论中。在这里复制为答案。见Question with no answers, but issue solved in the comments (or extended in chat))
您必须扫描您刚读过的字符串,并将转义序列替换为它们所代表的内容。你觉得有什么魔力可以帮到你?顺便说一句,len = strlen(yytext)是没有必要的。 yyleng始终是令牌的长度。