在lex中只接受来自键盘的一个输入

时间:2013-04-26 20:44:47

标签: c stdin lex flex-lexer

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

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

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

1 个答案:

答案 0 :(得分:1)

只需读取我们自己的字符串,然后调用yy_scan_string,然后调用yylex:

char myString[100];
fgets (myString, sizeof(myString), stdin);
yy_scan_string(myString);
yylex ();