• [^] # Re: YY_INPUT

    Posté par . En réponse au message Parser une chaine de caractère en C avec Flex/Bison. Évalué à 1.

    Voici un mini programme pour flex qui va simplement afficher le contenu de la chaine de caractère g_str :

    Sinon dans ton programme, j'ai l'impression que tu n'initialise jamais g_str_size et g_str_read, le mieux est sans doute d'avoir une fonction set_parse_string() qui va positionner correctement g_str, g_str_size et g_str_read.



    %{
    #include <string.h>

    #undef YY_INPUT
    #define YY_INPUT(b,r,ms) { r = my_yyinput(b,ms); }

    char g_str[] = "toto tata tutu\n";
    size_t g_str_size = sizeof(g_str);
    int g_str_read = 0;


    int my_yyinput(char* buf, int max_size)
    {
    int reste = g_str_size-g_str_read;
    int num = (max_size < reste ? max_size : reste);

    if (num > 0)
    {
    memcpy(buf, g_str+g_str_read, num);
    g_str_read += num;
    }
    return num;
    }
    %}

    %%
    %.|\n ECHO;
    %%


    Étienne