#c #lex
#c #lex
Вопрос:
Я пытаюсь подсчитать общее количество символов верхнего и нижнего регистра в программе lex, и ввод выполняется вечно, не сталкиваясь с EOF в Windows. Моя первая программа на lex. Пожалуйста, помогите.
#include<stdio.h>
int Upper=0;
int Lower=0;
%}
%%
[A-Z] {printf("Uppercaset");Upper ;}
[a-z] {printf("Lowercaset");Lower ;}
%%
int yywrap(void)
{
return 1;
}
main()
{
printf("Enter a stringn");
yylex();
printf("Uppercase=%d and Lowercase=%d",Upper,Lower);
return 0;
}
Как вы можете видеть, я не могу распечатать верхний и нижний счетчики. Я что-то здесь упускаю?
Комментарии:
1. Вы нажимали только
Enter
клавишу или клавишу конца файла (Ctrl-z
в Windows)? Лексика будет остановлена только в конце файла.2. @Someprogrammerdude Я пробовал ctrl z ctrl d, но они просто печатаются как ^ Z и так далее, но не встречаются как EOF
3. К сожалению, в Windows вам прежде всего нужно нажать
Ctrl-z
на новой строке, а во-вторых, вам может потребоваться также нажатьEnter
.