ps                272 user/sh.c      gettoken(char **ps, char *es, char **q, char **eq)
ps                277 user/sh.c        s = *ps;
ps                312 user/sh.c        *ps = s;
ps                317 user/sh.c      peek(char **ps, char *es, char *toks)
ps                321 user/sh.c        s = *ps;
ps                324 user/sh.c        *ps = s;
ps                351 user/sh.c      parseline(char **ps, char *es)
ps                355 user/sh.c        cmd = parsepipe(ps, es);
ps                356 user/sh.c        while(peek(ps, es, "&")){
ps                357 user/sh.c          gettoken(ps, es, 0, 0);
ps                360 user/sh.c        if(peek(ps, es, ";")){
ps                361 user/sh.c          gettoken(ps, es, 0, 0);
ps                362 user/sh.c          cmd = listcmd(cmd, parseline(ps, es));
ps                368 user/sh.c      parsepipe(char **ps, char *es)
ps                372 user/sh.c        cmd = parseexec(ps, es);
ps                373 user/sh.c        if(peek(ps, es, "|")){
ps                374 user/sh.c          gettoken(ps, es, 0, 0);
ps                375 user/sh.c          cmd = pipecmd(cmd, parsepipe(ps, es));
ps                381 user/sh.c      parseredirs(struct cmd *cmd, char **ps, char *es)
ps                386 user/sh.c        while(peek(ps, es, "<>")){
ps                387 user/sh.c          tok = gettoken(ps, es, 0, 0);
ps                388 user/sh.c          if(gettoken(ps, es, &q, &eq) != 'a')
ps                406 user/sh.c      parseblock(char **ps, char *es)
ps                410 user/sh.c        if(!peek(ps, es, "("))
ps                412 user/sh.c        gettoken(ps, es, 0, 0);
ps                413 user/sh.c        cmd = parseline(ps, es);
ps                414 user/sh.c        if(!peek(ps, es, ")"))
ps                416 user/sh.c        gettoken(ps, es, 0, 0);
ps                417 user/sh.c        cmd = parseredirs(cmd, ps, es);
ps                422 user/sh.c      parseexec(char **ps, char *es)
ps                429 user/sh.c        if(peek(ps, es, "("))
ps                430 user/sh.c          return parseblock(ps, es);
ps                436 user/sh.c        ret = parseredirs(ret, ps, es);
ps                437 user/sh.c        while(!peek(ps, es, "|)&;")){
ps                438 user/sh.c          if((tok=gettoken(ps, es, &q, &eq)) == 0)
ps                447 user/sh.c          ret = parseredirs(ret, ps, es);