zrejme vam uniklo ++argv na zacatku main() - tedy pokud neco neuniklo i me :-)
Fuj, to je ale blba konstrukce ... Mate pravdu, na zacatku je tam ++argv, coz posune ukazatel.
spravne by to melo byt "^ *$", tj. striska/mezera/hvezdicka/string ...
viz - smazani prazdnych radku ve vimu - ":%g/^ *$/d" chodi dobre
Zkusil jsem vsechny priklady a nechodi mi zadny.
U toho prvniho je asi problem v definici EMPTY_LINE,
kde je navic tecka a hvezdicka, ale i kdyz se odstrani, tak to nechodi, nevim proc (line 10, unrecognized rule). U ostatnich prikladu chybi vsechny procento-slozena zavorka v uvodni sekci, takze to gcc neprelozi.
(Pokud autor ty chyby udelal zamerne, aby zjistil, jestli to nekdo cte, tak se omlouvam)
Jinak skvely clanek.
Clanek je zajimavy, ale bylo by vhodne vyzkouset vypisovane programy. Zkusim zde vlozit opravu jednoho programu:
%{
int word_c=0;
%}
%%
[^ \t\n]* ++word_c;
.|\n
%%
main()
{
yylex();
printf("Počet slov = %d\n",word_c);
}
Prelozit se to pak musi pomoci prikazu:
[jirik@vodpad tmp]$ flex test.ll
[jirik@vodpad tmp]$ gcc -o test lex.yy.c -lfl