ps                266 sh.c           gettoken(char **ps, char *es, char **q, char **eq)
ps                271 sh.c             s = *ps;
ps                306 sh.c             *ps = s;
ps                311 sh.c           peek(char **ps, char *es, char *toks)
ps                315 sh.c             s = *ps;
ps                318 sh.c             *ps = s;
ps                345 sh.c           parseline(char **ps, char *es)
ps                349 sh.c             cmd = parsepipe(ps, es);
ps                350 sh.c             while(peek(ps, es, "&")){
ps                351 sh.c               gettoken(ps, es, 0, 0);
ps                354 sh.c             if(peek(ps, es, ";")){
ps                355 sh.c               gettoken(ps, es, 0, 0);
ps                356 sh.c               cmd = listcmd(cmd, parseline(ps, es));
ps                362 sh.c           parsepipe(char **ps, char *es)
ps                366 sh.c             cmd = parseexec(ps, es);
ps                367 sh.c             if(peek(ps, es, "|")){
ps                368 sh.c               gettoken(ps, es, 0, 0);
ps                369 sh.c               cmd = pipecmd(cmd, parsepipe(ps, es));
ps                375 sh.c           parseredirs(struct cmd *cmd, char **ps, char *es)
ps                380 sh.c             while(peek(ps, es, "<>")){
ps                381 sh.c               tok = gettoken(ps, es, 0, 0);
ps                382 sh.c               if(gettoken(ps, es, &q, &eq) != 'a')
ps                400 sh.c           parseblock(char **ps, char *es)
ps                404 sh.c             if(!peek(ps, es, "("))
ps                406 sh.c             gettoken(ps, es, 0, 0);
ps                407 sh.c             cmd = parseline(ps, es);
ps                408 sh.c             if(!peek(ps, es, ")"))
ps                410 sh.c             gettoken(ps, es, 0, 0);
ps                411 sh.c             cmd = parseredirs(cmd, ps, es);
ps                416 sh.c           parseexec(char **ps, char *es)
ps                423 sh.c             if(peek(ps, es, "("))
ps                424 sh.c               return parseblock(ps, es);
ps                430 sh.c             ret = parseredirs(ret, ps, es);
ps                431 sh.c             while(!peek(ps, es, "|)&;")){
ps                432 sh.c               if((tok=gettoken(ps, es, &q, &eq)) == 0)
ps                441 sh.c               ret = parseredirs(ret, ps, es);