%{ #include struct symb { char* palavra; int contador; }; %} %union { char* palavra; struct symb *symp; } %token STRING %type Lista %start P1 %% P1 : | Lista { printf("\nLista reconhecida:\n\n%s\n", $1->palavra); printf("\nN. palavras reconhecidas: %d\n", $1->contador); }; Lista: STRING { $$->palavra = strdup($1); $$->contador = 1; } | Lista ',' STRING { strcat($1->palavra, " , "); $$->palavra = strcat($1->palavra,$3); $$->contador = $1->contador + 1; } %% void yyerror(char* error) { fprintf(stderr,error); } int main() { yyparse(); return 0; }