У меня есть простой исходный код flex, который пропускает комментарии в /* */
и должен получить количество найденных комментариев:
%{
int in_comment = 0;
int count = 0;
%}
%%
\/\* { in_comment = 1; count++; }
\*\/ { in_comment = 0; }
. { if (!in_comment) ECHO; }
%%
int main(void)
{
yylex();
printf("Comments found %d\n", count); // never executed
return 0;
}
Первая половина работает отлично - она действительно пропускает комментарии, но они не учитываются... что я могу сделать для выполнения строки printf
?
Я просто попробовал это сам. Поэтому я скопировал исходный код на "xl" и сделал make x
ld, а затем пожаловался на отсутствующую функцию yywrap(). После добавления
%option noyywrap
Компиляция прошла успешно, и тест показал:
ronald@cheetah:~/tmp$ ./x < cribbage.c
... lots of output ...
Comments found 15
ОБНОВИТЬ:
Если текст не загружен из файла (только ./x
), вам необходимо завершить ввод вручную с помощью CTRL + D