diff options
Diffstat (limited to 'syntax.h')
| -rw-r--r-- | syntax.h | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/syntax.h b/syntax.h deleted file mode 100644 index 8404d15..0000000 --- a/syntax.h +++ /dev/null @@ -1,167 +0,0 @@ -# pragma once - -#include "utils.h" - - -// Stage 1 - -typedef enum { - PLUS, - MINUS, - MULT, -DIV, -} BinOp; - -typedef enum { - ARITHM_INT_LIT, - ARITHM_BINOP, -} ArithmNodeKind; - -typedef struct ArithmNode ArithmNode; -struct ArithmNode { - ArithmNodeKind kind; - union { - int lit_val; - IntVec open_fds; - struct { - BinOp op; - ArithmNode* left; - ArithmNode* right; - } binop; - } as; -}; -DECLARE_VEC(ArithmNode, ArithmNodeVec) - - -typedef struct { - ArithmNodeVec nodes; - ArithmNode* root; -} ArithmAst; - - -typedef enum { - UN_Q, - SINGLE_Q, - DOUBLE_Q, -} QuotationMode; - -typedef enum { - CHUNK_LIT, - CHUNK_VAR, - CHUNK_CMDSUB, - CHUNK_ARITHM, -} ChunkKind; - -typedef struct { - QuotationMode qmode; - ChunkKind kind; - union { - char* lit_str; - char* varname; - ArithmAst arithm_expr; - // TODO: CHUNK_CMDSUB - } as; -} Chunk; - -DECLARE_VEC(Chunk, Word) - - -typedef enum { - TOK_WORD, - TOK_SPEC, - TOK_SUB_IN, - TOK_SUB_OUT, -} TokenKind; - -typedef enum { - SPEC_PIPE, - SPEC_REDIR_W_TRUNC, - SPEC_REDIR_W_APPEND, - SPEC_REDIR_R, - SPEC_EOL, -} SpecialToken; - -typedef struct Token Token; -DECLARE_VEC(Token*, TokenPtrVec) - -struct Token { - TokenKind kind; - union { - Word word; - SpecialToken spec; - TokenPtrVec procsub_toks; - } as; -}; - -DECLARE_VEC(Token, TokenVec) - -typedef struct { - TokenVec token_pool; - TokenPtrVec top_tokens; -} Ast; - - - -// Stage 2 - - -typedef enum { - REDIR_FILE_IN, - REDIR_FILE_OUT, - REDIR_FDS, -} RedirectKind; - -typedef struct { - RedirectKind kind; - union { - char* filename; - struct{int from; int to;} fds; - } as; -} Redirect; - -DECLARE_VEC(Redirect, RedirectVec) - -typedef struct { - char** args; - RedirectVec redirects; -} SimpleCommand; - -DECLARE_VEC(SimpleCommand, SimpleCommandVec) -DECLARE_VEC(SimpleCommand*, SimpleCommandPtrVec) - - -typedef enum { - CONN_PIPE, - CONN_EOL, -} Connector; - -typedef struct { - SimpleCommand* cmd; - SimpleCommandPtrVec deps; - Connector conn; -} PlCommand; - -DECLARE_VEC(PlCommand, PlCommandVec) - -typedef struct { - SimpleCommandVec commands; - PlCommandVec pipeline; -} ExecTree; - - - -// Stage 3 - -typedef struct { - int redirected; - int to; -} FdRedirect; - -DECLARE_VEC(FdRedirect, FdRedirectVec) - -typedef struct { - char** args; - FdRedirectVec redirects; - int stdin_fd, stdout_fd; - IntVec open_fds; -} ExecutableCommand; |
