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); }
[^] # Re: YY_INPUT
Posté par Étienne . En réponse au message Parser une chaine de caractère en C avec Flex/Bison. Évalué à 1.
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