From 7614370d00d2991d12b2594b21e9d288bd425129 Mon Sep 17 00:00:00 2001 From: Matteo Flebus Date: Tue, 27 Jan 2026 16:17:40 +0100 Subject: [PATCH] feat(parser): implementing redirections... --- src/parser/grammar_advanced.c | 18 ++++++++++++++++-- src/utils/ast/ast_redir.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/parser/grammar_advanced.c b/src/parser/grammar_advanced.c index 9416eba..aef3c27 100644 --- a/src/parser/grammar_advanced.c +++ b/src/parser/grammar_advanced.c @@ -6,7 +6,19 @@ #include "grammar_basic.h" -bool +static enum ast_redir_type redir_tok_to_ast_type(enum token_type tok_type) +{ + switch(tok_type) + { + case TOKEN_REDIR_LEFT: + return AST_REDIR_TYPE_LESS; + case TOKEN_REDIR_RIGHT: + return AST_REDIR_TYPE_GREAT; + // TODO finish this + default: + return AST_REDIR_TYPE_NULL; + } +} struct ast *parse_redirection(struct lexer_context *ctx) { @@ -26,6 +38,8 @@ struct ast *parse_redirection(struct lexer_context *ctx) return NULL; } // char *redir_op = strdup(token->data); + + enum ast_redir_type redir_type = redir_tok_to_ast_type(token->type); POP_TOKEN(); token = PEEK_TOKEN(); @@ -38,7 +52,7 @@ struct ast *parse_redirection(struct lexer_context *ctx) char *target = strdup(token->data); POP_TOKEN(); - return ast_create_redir(io_number, redir_op, target); + return ast_create_redir(io_number, redir_type, target); } struct ast *parse_prefix(struct lexer_context *ctx) diff --git a/src/utils/ast/ast_redir.h b/src/utils/ast/ast_redir.h index 4c1008a..4dae912 100644 --- a/src/utils/ast/ast_redir.h +++ b/src/utils/ast/ast_redir.h @@ -5,6 +5,7 @@ enum ast_redir_type { + AST_REDIR_TYPE_NULL, AST_REDIR_TYPE_LESS, // < AST_REDIR_TYPE_GREAT, // > AST_REDIR_TYPE_DLESS, // <<