2011-05-06 123 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