how to execute code after yylex(); command
我遇到了与上面问题相同的问题,无法执行yylex()以下的任何操作
%{
#include<stdio.h>
int vowel=0;
int cons=0;
%}
%%
"a"|"e"|"i"|"o"|"u"|"A"|"E"|"I"|"O"|"U" {printf("is a VOWEL");vowel++;}
[a-zA-z] {printf("Is a Consonant");cons++;}
%%
int yywrap()
{
return 1;
}
main()
{
printf("Enter String\n");
yylex();
printf("vowel=%d and Consonent=%d",vowel,cons);//how to execute this statement?
}
字符串
我在win7上,答案说使用Ctrl+d结束输入(尝试在CMD中不起作用)。
那么,如何结束你的输入,使下一个语句执行?
2条答案
按热度按时间nmpmafwu1#
那么,如何结束你的输入,使下一个语句执行?
yylex()
将继续等待并处理输入,直到它看到文件结束 * 或 * 它执行一个执行显式return
的操作。Windows中类似于Ctrl+D的操作是Ctrl+Z,所以您可以尝试这样做,但是最好使用一个使其返回的规则来配置lexer。(每次调用),那么你可以让它在读取换行符时返回。但是,请注意,
yylex()
可能会缓冲输入字符,如果在yylex()
返回后尝试读取相同的输入文件,除非再次调用yylex()
本身,否则可能会导致一些未处理的输入丢失。gv8xihay2#
Windows中Ubuntu的Ctrl + D替代:
Ctrl + Z然后Enter