ps                267 user/sh.c      gettoken(char **ps, char *es, char **q, char **eq)
ps                272 user/sh.c        s = *ps;
ps                307 user/sh.c        *ps = s;
ps                312 user/sh.c      peek(char **ps, char *es, char *toks)
ps                316 user/sh.c        s = *ps;
ps                319 user/sh.c        *ps = s;
ps                346 user/sh.c      parseline(char **ps, char *es)
ps                350 user/sh.c        cmd = parsepipe(ps, es);
ps                351 user/sh.c        while(peek(ps, es, "&")){
ps                352 user/sh.c          gettoken(ps, es, 0, 0);
ps                355 user/sh.c        if(peek(ps, es, ";")){
ps                356 user/sh.c          gettoken(ps, es, 0, 0);
ps                357 user/sh.c          cmd = listcmd(cmd, parseline(ps, es));
ps                363 user/sh.c      parsepipe(char **ps, char *es)
ps                367 user/sh.c        cmd = parseexec(ps, es);
ps                368 user/sh.c        if(peek(ps, es, "|")){
ps                369 user/sh.c          gettoken(ps, es, 0, 0);
ps                370 user/sh.c          cmd = pipecmd(cmd, parsepipe(ps, es));
ps                376 user/sh.c      parseredirs(struct cmd *cmd, char **ps, char *es)
ps                381 user/sh.c        while(peek(ps, es, "<>")){
ps                382 user/sh.c          tok = gettoken(ps, es, 0, 0);
ps                383 user/sh.c          if(gettoken(ps, es, &q, &eq) != 'a')
ps                401 user/sh.c      parseblock(char **ps, char *es)
ps                405 user/sh.c        if(!peek(ps, es, "("))
ps                407 user/sh.c        gettoken(ps, es, 0, 0);
ps                408 user/sh.c        cmd = parseline(ps, es);
ps                409 user/sh.c        if(!peek(ps, es, ")"))
ps                411 user/sh.c        gettoken(ps, es, 0, 0);
ps                412 user/sh.c        cmd = parseredirs(cmd, ps, es);
ps                417 user/sh.c      parseexec(char **ps, char *es)
ps                424 user/sh.c        if(peek(ps, es, "("))
ps                425 user/sh.c          return parseblock(ps, es);
ps                431 user/sh.c        ret = parseredirs(ret, ps, es);
ps                432 user/sh.c        while(!peek(ps, es, "|)&;")){
ps                433 user/sh.c          if((tok=gettoken(ps, es, &q, &eq)) == 0)
ps                442 user/sh.c          ret = parseredirs(ret, ps, es);