Я пытаюсь написать оболочку, используя yacc и lex, и у меня возникают некоторые проблемы с моими перенаправителями ввода / вывода. В настоящее время я могу использовать операторы <и> нормально и в любом порядке, но моя проблема в том, что я могу перенаправить дважды без ошибок, например, "ls> log> log2"
Код моего правила приведен ниже, кто-нибудь может дать мне несколько советов, как это исправить? Спасибо!
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 модификатор для моей команды и что у меня действительно может быть несколько копий одного и того же перенаправления ввода / вывода.