yaccとlexを使用してシェルを作成しようとしていますが、I/Oリダイレクタでいくつかの問題が発生しています。現在、<および>演算子は問題なく任意の順序で使用できますが、問題は、「ls>log>log2」などのエラーなしで2回リダイレクトできることです。
私のルールコードは以下のとおりですが、これを修正するためのヒントを教えてもらえますか?ありがとう!
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リダイレクトの複数のコピーを実際に持つことができることを学びました。