faboussard / 42_minishell

1 stars 0 forks source link

si on a " ' " ' => passe le check syntax sauf que finalement cest une syntax error. comment le traiter? exec ou au prealable ? #50

Closed faboussard closed 5 months ago

faboussard commented 5 months ago

07:22:32 juba@juba-desktop minishell ±|parsing ✗|→ '"'"

bash: unexpected EOF while looking for matching `"' bash: syntax error: unexpected end of file 07:22:41 juba@juba-desktop minishell ±|parsing ✗|→ "'"'

bash: unexpected EOF while looking for matching `'' bash: syntax error: unexpected end of file

melobern commented 5 months ago

L'exec ne peut pas traiter une syntax error, surtout quand celle-ci doit renvoyer une phrase d'erreur de check_syntax. Donc, ici : '"'" (en espaçant : ' " ' ") La premiere double quote ne doit pas être considérée comme un commencement de "citation", il faut que le programme considère la seconde double quote comme un début qui ne s'est pas fini. Là-dessus, ça pourrait reprendre un fonctionnement similaire à ce que j'avais fait dans pipex, dans ma gestion des quote. Si " n'a pas été précédé par un ' / Si ' n'a pas été précédé par un ", alors il ne doit pas être considéré comme un début de quote. Une idée de fonction que je viens de coder, à voir si elle fonctionne en pratique :

bool quote_should_not_be_seen_as_a_real_quote(char *str, char quote, size_t i)
{
    bool first_quote_is_open;
    char other_quote;
    size_t j;

    if (quote == '\'')
        other_quote = '\"';
    else
        other_quote = '\'';
    first_quote_is_open = 0;
    j = 0;
    while (j < i && str[j])
    {
        if (str[j] == other_quote)
            first_quote_is_open = !first_quote_is_open;
        j++;
    }
    return (first_quote_is_open);
}