コード例 #1
0
struct cmd*
parseline(char **ps, char *es)
{
  struct cmd *cmd;
  cmd = parsepipe(ps, es);
  return cmd;
}
コード例 #2
0
ファイル: sh.c プロジェクト: JianxinMa/v9.js
struct cmd* parsepipe(char** ps, char* es)
{
    struct cmd* cmd = parseexec(ps, es);
    if (peek(ps, es, "|")) {
        gettoken(ps, es, 0, 0);
        cmd = pipecmd(cmd, parsepipe(ps, es));
    }
    return cmd;
}
コード例 #3
0
ファイル: sh.c プロジェクト: JianxinMa/v9.js
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;
}
コード例 #4
0
ファイル: parser.c プロジェクト: JanFan/Simple-Shell-in-C
struct cmd*
parsecmd(char *s)
{
    char *es;
    struct cmd *cmd;

    es = s + strlen(s);
    cmd = parsepipe(&s, es);
    if(s != es) {
        fprintf(stderr, "leftovers: %s", s);
        exit(-1);
    }
    return cmd;
}
コード例 #5
0
ファイル: parser.c プロジェクト: JanFan/Simple-Shell-in-C
struct cmd*
parsepipe(char **ps, char *es)
{
    struct cmd *cmd;

    char *q, *eq;
    if( 1 == scan(ps, es, "|", &q, &eq) ) {
        cmd = parseexec(&q, eq);
        (*ps)++;
        cmd = pipecmd(cmd, parsepipe(ps, es));
    }
    else {
        cmd = parseexec(&q, eq);
    }
    return cmd;
}