C++ 莱克斯:强制扫描?
我正在用LEX编写一个相当简单的程序,在解析一些文件之后,解析来自用户的输入 现在,有了这些文件,一切都像一个符咒。然而,当涉及到来自stdin的用户输入时,LEX规则在发送EOF(通过ctrl+D)字符之前不会运行。当我这样做时,LEX解析我写的所有内容,然后等待更多的输入。第二个连续EOF终止扫描仪C++ 莱克斯:强制扫描?,c++,c,lex,C++,C,Lex,我正在用LEX编写一个相当简单的程序,在解析一些文件之后,解析来自用户的输入 现在,有了这些文件,一切都像一个符咒。然而,当涉及到来自stdin的用户输入时,LEX规则在发送EOF(通过ctrl+D)字符之前不会运行。当我这样做时,LEX解析我写的所有内容,然后等待更多的输入。第二个连续EOF终止扫描仪 问题是,我希望程序对\n做出反应,输出一些数据。有没有办法从规则内部强制扫描,或者以某种方式配置LEX缓冲以匹配此行为?解决了!这就成功了: %option always-interactive
问题是,我希望程序对
\n
做出反应,输出一些数据。有没有办法从规则内部强制扫描,或者以某种方式配置LEX缓冲以匹配此行为?解决了!这就成功了:
%option always-interactive
我把这个留在这里以备将来参考,以防。。。嗯,谁知道呢。这是我用lex和yacc编写的unixshell的一个片段。我想它会成功的
"\n" |
";" {
//yylval.sb = getsb(yytext); for yacc stuff
fprintf(stderr,"EOL\n");
return(EOL);
}
半结肠只用于在shell中的一行上执行多个命令。考虑接受你的回答,这样就会显示出有一个可接受的答案。“量子力学我已经等了2天了:”23个小时。