Flex / Lex Encoding Strings com caracteres escapados
Vou me referir a esta pergunta para alguns dos antecedentes:
Expressão regular para uma string literal em flex / lex
O problema que estou tendo é lidar com a entrada com caracteres de escape no meu lexer e acho que pode ser um problema relacionado à codificação da string, mas não tenho certez
Aqui está como eu estou lidando com literais de string no meu lexer:
\"(\\.|[^\\"])*\"
{
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);
}
Isso gera o seguinte:
value = <text\n"> <15a1bb0>
value = <text
> <7ac871>
Parece tratar o caractere de nova linha separadamente como uma barra invertida seguida por um n.
O que está acontecendo aqui, como processo o texto para ser idêntico à entrada