From fc27548c447ed9bcd07493983431e0a6e72c7cef Mon Sep 17 00:00:00 2001 From: Ákos Kőrösi Date: Thu, 21 May 2026 12:44:01 +0200 Subject: restructure dir --- redes/syntax.h | 194 --------------------------------------------------------- 1 file changed, 194 deletions(-) delete mode 100644 redes/syntax.h (limited to 'redes/syntax.h') diff --git a/redes/syntax.h b/redes/syntax.h deleted file mode 100644 index 0cdb76c..0000000 --- a/redes/syntax.h +++ /dev/null @@ -1,194 +0,0 @@ -# pragma once - -#include "../src/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, -} TokenKind; - -typedef enum { - OP_PIPE, - OP_REDIR_W_TRUNC, - OP_REDIR_W_APPEND, - OP_REDIR_R, - OP_EOL, -} OperatorToken; - - -typedef enum { - SPEC_OP, - SPEC_SUB_IN, - SPEC_SUB_OUT, -} SpecialTokenKind; - -typedef struct { - SpecialTokenKind kind; - union { - OperatorToken op; - void* proc_sub_region; - } as; -} SpecialToken; - - -typedef struct Token Token; -DECLARE_VEC(Token*, TokenPtrVec) - -struct Token { - TokenKind kind; - union { - Word word; - SpecialToken spec; - } as; -}; - -DECLARE_VEC(Token, TokenVec) -DECLARE_VEC(TokenVec, TokenVecVec) - -typedef struct { - TokenVecVec region_pool; - TokenVec* root; -} Ast; - - - -// Stage 2 - - -typedef enum { - REDIR_WRITE_TRUNC, - REDIR_WRITE_APPEND, - REDIR_READ, - REDIR_FDS, -} RedirectKind; - -typedef struct { - RedirectKind kind; - union { - char* filename; - struct{int from; int to;} fds; - } as; -} Redirect; - -DECLARE_VEC(Redirect, RedirectVec) - -typedef struct PlCommand PlCommand; - -typedef enum { - ARG_PS_IN, - ARG_PS_OUT, - ARG_LIT, -} ArgKind; - -typedef struct { - ArgKind kind; - union { - char* lit_str; - void* sub_pipeline; - } as; -} Arg; - -DECLARE_VEC(Arg, ArgVec) - - -typedef enum { - CONN_PIPE, - CONN_EOL, -} Connector; - - -struct PlCommand { - ArgVec args; - RedirectVec redirects; - Connector conn; -}; - -DECLARE_VEC(PlCommand, Pipeline) -DECLARE_VEC(Pipeline, PipelineVec) - -typedef struct { - PipelineVec pl_pool; - Pipeline* root; -} PipelineTree; - - - -// 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; -- cgit v1.2.3