在CMD win7上执行时如何在lex中结束输入

rur96b6h  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(107)

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中不起作用)。
那么,如何结束你的输入,使下一个语句执行?

nmpmafwu

nmpmafwu1#

那么,如何结束你的输入,使下一个语句执行?
yylex()将继续等待并处理输入,直到它看到文件结束 * 或 * 它执行一个执行显式return的操作。
Windows中类似于Ctrl+D的操作是Ctrl+Z,所以您可以尝试这样做,但是最好使用一个使其返回的规则来配置lexer。(每次调用),那么你可以让它在读取换行符时返回。但是,请注意,yylex()可能会缓冲输入字符,如果在yylex()返回后尝试读取相同的输入文件,除非再次调用yylex()本身,否则可能会导致一些未处理的输入丢失。

gv8xihay

gv8xihay2#

Windows中Ubuntu的Ctrl + D替代:
Ctrl + Z然后Enter

相关问题