#pragma once #include "lex.h" #include "utils.h" typedef enum { STDIN_REDIR, STDOUT_REDIR_TRUNC, STDOUT_REDIR_APPEND, } RedirKind; typedef struct { RedirKind kind; union { Word std_redir_filename; } as; } Redirect; DECLARE_VEC(Redirect, RedirectVec) typedef struct { TokenVec args; RedirectVec redirects; // TODO: prefix variable settings } Command; typedef enum { CONN_PIPE, CONN_EOL, // TODO: add the |& thingy } Connector; DECLARE_MAYBE(Connector, MaybeConnector) typedef struct { Command cmd; Connector conn; } PipelineElement; DECLARE_VEC(PipelineElement, Pipeline) Pipeline parse_tokstream(Token* tokstream);