在CMD win7上执行时如何结束lex中的输入
我的问题与上面的问题相同,无法执行低于yylex()的任何操作在CMD win7上执行时如何结束lex中的输入,c,lex,C,Lex,我的问题与上面的问题相同,无法执行低于yylex()的任何操作 %{ #包括 int元音=0; int cons=0; %} %% “a”|“e”|“i”|“o”|“u”|“a”|“e”|“i”|“o”|“u”{printf(“是元音”);元音+++} [a-zA-z]{printf(“是辅音”);cons++;} %% int yywrap() { 返回1; } main() { printf(“输入字符串\n”); yylex(); printf(“元音=%d和辅音=%d”,元音,cons)
%{
#包括
int元音=0;
int cons=0;
%}
%%
“a”|“e”|“i”|“o”|“u”|“a”|“e”|“i”|“o”|“u”{printf(“是元音”);元音+++}
[a-zA-z]{printf(“是辅音”);cons++;}
%%
int yywrap()
{
返回1;
}
main()
{
printf(“输入字符串\n”);
yylex();
printf(“元音=%d和辅音=%d”,元音,cons);//如何执行此语句?
}
我在win7上,答案是使用Ctrl+d结束输入(尝试在CMD中不起作用)
那么,如何结束使下一条语句能够执行的输入呢
那么,如何结束使下一条语句能够执行的输入呢
yylex()
将继续等待并处理输入,直到它看到文件结尾或执行执行显式返回的操作
Windows类似于Ctrl+D id Ctrl+Z,所以您可以尝试一下,但是最好是使用一个规则来配置lexer,使其返回。例如,如果您只需要lex一行输入(每个调用),那么您可以在它读取换行符时使其返回。但是请注意,yylex()
可能会缓冲输入字符,如果在yylex()
返回后尝试读取相同的输入文件,则可能会导致一些未处理的输入丢失,除非再次调用yylex()
本身
那么,如何结束使下一条语句能够执行的输入呢
yylex()
将继续等待并处理输入,直到它看到文件结尾或执行执行显式返回的操作
Windows类似于Ctrl+D id Ctrl+Z,所以您可以尝试一下,但是最好是使用一个规则来配置lexer,使其返回。例如,如果您只需要lex一行输入(每个调用),那么您可以在它读取换行符时使其返回。但是请注意,yylex()
可能会缓冲输入字符,如果在yylex()
返回后尝试读取相同的输入文件,则可能会导致一些未处理的输入丢失,除非再次调用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?
}