用转义字符读取字符串

时间:2014-08-29 06:18:44

标签: parsing escaping flex-lexer

我正在构建一个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。即使它也不适用于制表符和换行符。我该如何解决?

1 个答案:

答案 0 :(得分:0)

(最好的答案在@rici的评论中。在这里复制为答案。见Question with no answers, but issue solved in the comments (or extended in chat)

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