Retourner au contenu associé (entrée de forum : Parser une chaine de caractère en C avec Flex/Bison)
Posté par Étienne le 29 avril 2009 à 16:16. En réponse au message Parser une chaine de caractère en C avec Flex/Bison. Évalué à 1.
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; }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: YY_INPUT
Posté par Étienne . 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;
}