Я хочу сначала сопоставить пробелы между словами, а затем подсчитать общее количество пробелов в предложении. Я пытаюсь сделать это ниже,
%{
#undef yywrap
#define yywrap() 1
int VowelCount = 0;
int ConsonantCount=0;
int CountWhiteSpace=0;
int CountNewLine=0;
int CountInteger=0;
int CountFloat=0;
%}
%%
[aeiouAEIOU] {++VowelCount;}
[bcdBCDfghFGHjklmnJKLMNpqrstPQRSTvwxyzVWXYZ] {++ConsonantCount;}
[0-9] {++CountInteger;}
[0-9]*[.][0-9]+ {++CountFloat;}
[\s] {++CountWhiteSpace;}
\n {++CountNewLine;}
end {return 0;}
%%
int main(){
yylex();
printf("\nNumber of vowel in the given input %d\n", VowelCount);
printf("\nNumber of consonant in the given input %d\n",ConsonantCount);
printf("\nNumber of integer in the given input %d\n",CountInteger);
printf("\nNumber of float in the given input %d\n",CountFloat);
printf("\nNumber of line in the given input %d\n",CountNewLine);
printf("\nTotal white space count %d\n",CountWhiteSpace);
return 0;
}
но я получаю что-то вроде ошибки:
строка 16: Предупреждение, правило не может быть сопоставлено.
Я могу подсчитать гласные, согласные, новую строку, целые числа и числа с плавающей запятой, но мне не хватает пробелов. Я хочу подсчитать пробелы следующим образом:
ввод: Я Ашикур Рахман.
Вывод: 3 // количество пробелов между словами Я, есть, Ашикур, Рахман.
Как я могу добиться этого в ФЛЕКС? Заранее спасибо.