2011-05-06 54 views
3

我正在用LEX编写一个相当简单的程序,解析一些文件后,解析来自用户的输入。Lex:强制扫描?

现在,随着文件,一切都像一个魅力。但是,当从标准输入提供用户输入时,直到发送EOF(通过ctrl + D)字符,LEX规则才会运行。当我这样做时,LEX解析我写的所有内容,然后等待更多输入。第二个连续的EOF终止扫描仪。

事情是,我想程序在\n上作出反应,输出一些数据。有没有办法从规则中强制执行扫描,或者配置LEX缓冲以匹配此行为?

回答

4

解决!这是诀窍:

%option always-interactive 

我要离开这里以备将来参考,以防万一......呃,谁知道。

+0

考虑接受你的答案,所以这将显示为有一个接受的答案。 – QuantumMechanic 2011-05-07 01:42:31

+0

@QuantumMechanic我等了2天才能做到这一点:)还剩23小时 – slezica 2011-05-07 20:45:34

0

这是一个来自unix shell的代码片段,我用lex和yacc做了。我认为它会诀窍。

"\n"     | 
";"      { 
         //yylval.sb = getsb(yytext); for yacc stuff 
         fprintf(stderr,"EOL\n"); 
         return(EOL); 
         } 
+0

分号只是在shell中的一行上做多个命令。 – richmb 2011-05-06 20:20:46