summaryrefslogtreecommitdiff
path: root/redes/syntax.h
diff options
context:
space:
mode:
authorÁkos Kőrösi <korakos99@gmail.com>2026-05-21 12:44:01 +0200
committerÁkos Kőrösi <korakos99@gmail.com>2026-05-21 12:44:01 +0200
commitfc27548c447ed9bcd07493983431e0a6e72c7cef (patch)
treedbb25a8cc09cbacd8d0d1dcd4a3962f468f96551 /redes/syntax.h
parent2efe642849cf6d45d5413cd77d8cafaf9b32db00 (diff)
restructure dir
Diffstat (limited to 'redes/syntax.h')
-rw-r--r--redes/syntax.h194
1 files changed, 0 insertions, 194 deletions
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;