我想寫一個使用yacc和lex的shell,我遇到了一些I/O轉向器的問題。目前,我可以使用<和>運營商罰款和任何順序,但我的問題是我可以重定向兩次沒有錯誤,如「ls> log> log2」yacc,只應用規則一次
我的規則代碼在下面,任何人都可以給我有關如何解決這個問題的一些提示?謝謝!
io_mod:
iomodifier_opt io_mod
|
;
iomodifier_opt:
GREAT WORD {
printf(" Yacc: insert output \"%s\"\n", $2);
Command::_currentCommand._outFile = $2;
}
|
LESS WORD {
printf(" Yacc: insert input \"%s\"\n", $2);
Command::_currentCommand._inputFile = $2;
}
| /* can be empty */
;
編輯:說我的TA後,我才知道,我其實沒有需要有1只爲我的命令修飾符,而且我居然可以有相同的I/O重定向的多個副本。
這是轉讓的要求嗎?標準shell允許您多次重定向而不出錯,輸出只在最後一個文件中。我不確定你想要這樣做有多現實,但你錯過了>>和<<。 – CTT 2009-02-23 18:39:57
實際上沒有提到我正在做的任務,我只是認爲只能重定向一次會更有意義。 我同意上面的列表不完整,我將在稍後添加其他I/O重定向。 – samoz 2009-02-23 18:51:18