我正在用LEX編寫一個相當簡單的程序,解析一些文件後,解析來自用戶的輸入。Lex:強制掃描?
現在,隨着文件,一切都像一個魅力。但是,當從標準輸入提供用戶輸入時,直到發送EOF(通過ctrl + D)字符,LEX規則纔會運行。當我這樣做時,LEX解析我寫的所有內容,然後等待更多輸入。第二個連續的EOF終止掃描儀。
事情是,我想程序在\n
上作出反應,輸出一些數據。有沒有辦法從規則中強制執行掃描,或者配置LEX緩衝以匹配此行爲?
我正在用LEX編寫一個相當簡單的程序,解析一些文件後,解析來自用戶的輸入。Lex:強制掃描?
現在,隨着文件,一切都像一個魅力。但是,當從標準輸入提供用戶輸入時,直到發送EOF(通過ctrl + D)字符,LEX規則纔會運行。當我這樣做時,LEX解析我寫的所有內容,然後等待更多輸入。第二個連續的EOF終止掃描儀。
事情是,我想程序在\n
上作出反應,輸出一些數據。有沒有辦法從規則中強制執行掃描,或者配置LEX緩衝以匹配此行爲?
解決!這是訣竅:
%option always-interactive
我要離開這裏以備將來參考,以防萬一......呃,誰知道。
這是一個來自unix shell的代碼片段,我用lex和yacc做了。我認爲它會訣竅。
"\n" |
";" {
//yylval.sb = getsb(yytext); for yacc stuff
fprintf(stderr,"EOL\n");
return(EOL);
}
分號只是在shell中的一行上做多個命令。 – richmb 2011-05-06 20:20:46
考慮接受你的答案,所以這將顯示爲有一個接受的答案。 – QuantumMechanic 2011-05-07 01:42:31
@QuantumMechanic我等了2天才能做到這一點:)還剩23小時 – slezica 2011-05-07 20:45:34