2016-11-01 19 views
0

how to execute code after yylex(); command如何在CMD WIN7执行时结束法输入

我有同样的问题,因为上面的问题,不能够在函数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

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

yylex()将继续等待和过程的输入,直到它看到文件结束,它执行执行明确return的动作。

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

相关问题