• [^] # Re: YY_INPUT

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


    si je mets un char* j'ai un bus error lorsque j'initialise ma chaine de caractère !


    Il faut quand même allouer ton buffer.

    Je te propose de faire quelquechose du genre (dans main.y) :


    char* g_str = NULL;
    size_t g_str_size;
    size_t g_str_read;

    int set_parse_string(char* str)
    {
    size_t length = strlen(str);
    if (g_str != NULL) free(g_str);

    g_str = (char*) malloc(length+1);
    if (g_str == NULL) return 0;

    strcpy(g_str, str);
    g_str_size = length;
    g_str_read = 0;

    return 1;
    }


    et dans ton main :

    int main(void) {
    value = 0;
    state = off;

    /* première suite de commandes à parser (ici il n'y en a qu'une) */
    set_parse_string("set temperature 12");
    yyparse();

    /* deuxième suite de commandes à parser */
    set_parse_string("get temperature heat");
    yyparse();

    return 0;
    }