2013-04-26 83 views
1

首先程序要求用户输入一个字符串。然后它调用yylex()函数并显示字符串是否被接受。我想在匹配第一个输入后停止接受来自输入的更多字符串。 下面的代码首先要求用户输入一个字符串,然后打印它是否被接受。但是这个过程一直持续到我按下CTRL + D。我只想接受来自字符串的一个输入,匹配它然后停止。我的代码有什么问题?感谢在lex中仅接受来自键盘的一个输入

%% 
^[a-z][A-Z][a-z]{1,8}$ {printf("Username Accepted");} 
.*      printf("Invalid Username"); 
%% 

int main() 
{ 
    printf("Enter Username: "); 
    yylex(); 
    printf("\ndone"); 
} 
+1

小心标注。这个问题与Apache/Adob​​e Flex - 一个UI框架无关。我重新将它用于gnu-flex,它用于词法分析器。 – JeffryHouser 2013-04-26 22:33:30

回答

1

由我们自己刚才读的字符串,然后调用yy_scan_string其次函数yylex:

char myString[100]; 
fgets (myString, sizeof(myString), stdin); 
yy_scan_string(myString); 
yylex(); 
相关问题