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

时间:2016-11-01 18:38:52

标签: c lex

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中不起作用)。

那么如何结束输入,使下一个语句能够执行?

1 个答案:

答案 0 :(得分:1)

  

那么如何结束输入,使下一个语句能够执行?

yylex()将继续等待并处理输入,直到它看到文件结尾它执行执行显式return的操作。

Windows模拟Ctrl + D id Ctrl + Z,所以你可以尝试一下,但配置词法分析器使其返回会更好。例如,如果您只需要输入一行输入(每次调用),那么您可以在读取换行符时返回它。但请注意,yylex()可能会缓冲输入字符,如果您在yylex()返回后尝试读取相同的输入文件,则会导致某些未处理的输入丢失,除非调用yylex()再一次。