以下是一些背景信息的参考:
我遇到的问题是在我的词法分析器中处理带有转义字符的输入,我认为这可能与字符串的编码有关,但我不确定。
以下是我在词法分析器中处理字符串字面值的方法:
\"(\\.|[^\\"])*\"
{
char* text1 = strndup(yytext + 1, strlen(yytext) - 2);
char* text2 = "text\n";
printf("value = <%s> <%x>\n", text1, text1);
printf("value = <%s> <%x>\n", text2, text2);
}
这将输出以下内容:
value = <text\n"> <15a1bb0>
value = <text
> <7ac871>
看起来它将换行字符单独处理为反斜杠后跟着一个n。
这里发生了什么,我该如何处理文本以使其与C输入相同?
<string><<EOF>> { error("未结束的字符串\n") }
作为参考? - Downgoat