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

问题描述 投票:0回答:2

如何在 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?
    }

我使用的是win7,答案是使用Ctrl+d结束输入(尝试在CMD中不起作用)。

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

c lex
2个回答
2
投票

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

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

Windows 中的 Ctrl+D 类似于 Ctrl+Z,因此您可以尝试这样做,但最好使用使其返回的规则来配置词法分析器。例如,如果您只需要对单行输入进行词法分析(每次调用),那么您可以让它在读取换行符时返回。但请注意,

yylex()
可能会缓冲输入字符,如果您在
yylex()
返回后尝试读取相同的输入文件,则可能会导致一些未处理的输入丢失,除非再次调用
yylex()
本身。


-1
投票

Ctrl + D Windows 中 Ubuntu 的替代品:

Ctrl + D 然后 Ctrl + C

© www.soinside.com 2019 - 2024. All rights reserved.