struct cmd* parseline(char** ps, char* es) { struct cmd* cmd = parsepipe(ps, es); while (peek(ps, es, "&")) { gettoken(ps, es, 0, 0); cmd = backcmd(cmd); } if (peek(ps, es, ";")) { gettoken(ps, es, 0, 0); cmd = listcmd(cmd, parseline(ps, es)); } return cmd; }
struct cmd* parseline(char **ps, char *es) { struct cmd *cmd; cmd = parseexec(ps, es); if(peek(ps, es, "|")){ gettoken(ps, es, 0, 0); cmd = pipecmd(cmd, parseline(ps, es)); } else if (peek(ps, es, ";")){ gettoken(ps, es, 0, 0); cmd = listcmd(cmd, parseline(ps, es)); } return cmd; }