для дальнейшего использования?

у ссылаться на этот вопрос для некоторых предыстории:

Регулярное выражение для строкового литерала в flex / lex

Проблема, с которой я сталкиваюсь, заключается в обработке ввода с помощью экранированных символов в моем лексере, и я думаю, что это может быть проблемой, связанной с кодированием строки, но я не уверен.

Вот как я обрабатываю строковые литералы в моем лексере:

\"(\\.|[^\\"])*\"
{                   
    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?

Ответы на вопрос(1)

Ваш ответ на вопрос