From d3849d196f4bedf2b2bf628a2bc6152be32a5abf Mon Sep 17 00:00:00 2001 From: gazhonsepaskwa Date: Fri, 7 Feb 2025 18:08:37 +0100 Subject: [PATCH] norm --- includes/minishell.h | 11 +++---- srcs/parsing/ast/and_or.c | 6 ++-- srcs/parsing/ast/ast.c | 10 +++--- srcs/parsing/ast/commands.c | 37 +++++++++++---------- srcs/parsing/ast/cutll.c | 36 ++++++++++---------- srcs/parsing/ast/free_ast.c | 22 ++++++------- srcs/parsing/ast/redirections.c | 42 ++++++++++++------------ srcs/parsing/ast/subsh.c | 30 +++++++++-------- srcs/parsing/ast/top_token.c | 15 ++++----- srcs/parsing/drawio/drawio_ast_utils.c | 22 ++----------- srcs/parsing/drawio/drawio_print_ast.c | 19 +++++------ srcs/parsing/drawio/drawio_utils.c | 40 +++++++++++++--------- srcs/parsing/parser.c | 9 +++-- srcs/parsing/syntax.c | 28 ++++++++-------- srcs/parsing/tokenizer/linked_list.c | 6 ++-- srcs/parsing/tokenizer/token_and_pres.c | 18 +++++----- srcs/parsing/tokenizer/tokenizer.c | 7 ++-- srcs/parsing/tokenizer/tokenizer_utils.c | 6 ++-- 18 files changed, 178 insertions(+), 186 deletions(-) diff --git a/includes/minishell.h b/includes/minishell.h index d7863df..cad76c4 100644 --- a/includes/minishell.h +++ b/includes/minishell.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* minishell.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/27 11:25:25 by lderidde #+# #+# */ -/* Updated: 2025/02/07 10:22:28 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:22:16 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,8 +29,8 @@ typedef struct s_msh # include # include # include -# include -# include +# include +# include # include # include "../lib/libft/libft.h" @@ -44,7 +44,7 @@ typedef struct s_msh # include "exec/expander.h" t_msh *init_msh(char **envp); -void free_msh(t_msh *msh); +void free_msh(t_msh *msh); void free_child(t_msh *msh); # define POW1 "\033[1;38;2;21;22;26;48;2;92;106;178m" @@ -53,5 +53,4 @@ void free_child(t_msh *msh); # define POW4 "\033[0;38;2;204;205;209;48;2;39;39;39m" # define POW5 "\033[1;38;2;39;39;39m" - #endif diff --git a/srcs/parsing/ast/and_or.c b/srcs/parsing/ast/and_or.c index 3dc78fa..3bfbf4d 100644 --- a/srcs/parsing/ast/and_or.c +++ b/srcs/parsing/ast/and_or.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* and_or.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 07:57:33 by nalebrun #+# #+# */ -/* Updated: 2025/02/05 07:57:33 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:57:01 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ void create_and_or(t_ast_n *self, t_node *lst, t_node *token, t_msh *msh) { - t_nodell *nodell; + t_nodell *nodell; nodell = cutll(lst, token, 1); self->left = create_ast_n(nodell->node, self, msh, self->sh); diff --git a/srcs/parsing/ast/ast.c b/srcs/parsing/ast/ast.c index b916603..ffcdd6f 100644 --- a/srcs/parsing/ast/ast.c +++ b/srcs/parsing/ast/ast.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* ast.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/24 08:22:16 by lderidde #+# #+# */ -/* Updated: 2025/02/05 14:04:12 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:57:10 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,7 +15,7 @@ t_ast_n *create_ast_n(t_node *lst, t_ast_n *parent, t_msh *msh, bool subsh) { - t_ast_n *node; + t_ast_n *node; t_node *token; node = malloc(sizeof(t_ast_n)); @@ -29,7 +29,7 @@ t_ast_n *create_ast_n(t_node *lst, t_ast_n *parent, t_msh *msh, bool subsh) node->_stdin = 0; node->save_stdo = 1; node->save_stdi = 0; - node->sh = subsh; + node->sh = subsh; if (node->state == _AND || node->state == _OR) create_and_or(node, lst, token, msh); else if (node->state == _SUBSH) @@ -43,7 +43,7 @@ t_ast_n *create_ast_n(t_node *lst, t_ast_n *parent, t_msh *msh, bool subsh) t_ast_n *get_ast(t_msh *msh, t_node *lst) { - t_ast_n *head; + t_ast_n *head; head = create_ast_n(lst, NULL, msh, false); return (head); diff --git a/srcs/parsing/ast/commands.c b/srcs/parsing/ast/commands.c index a5afa11..1a96889 100644 --- a/srcs/parsing/ast/commands.c +++ b/srcs/parsing/ast/commands.c @@ -3,16 +3,16 @@ /* ::: :::::::: */ /* commands.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 07:48:37 by nalebrun #+# #+# */ -/* Updated: 2025/02/05 07:48:37 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 18:00:41 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ -# include "../../../includes/minishell.h" +#include "../../../includes/minishell.h" -char **lltotab(t_node *lst, t_node *limiter) +char **lltotab(t_node *lst, t_node *limiter) { char **out; int count; @@ -40,11 +40,11 @@ char **lltotab(t_node *lst, t_node *limiter) return (out); } -char **get_args(t_node *start) +char **get_args(t_node *start) { t_node *cpy; char **out; - + cpy = NULL; while (start) { @@ -64,23 +64,26 @@ char **get_args(t_node *start) void create_cmd(t_ast_n *self, t_node *lst) { char **cmd_args; + int i; self->state = _CMD; self->files = NULL; self->redir = ft_calloc(1, sizeof(t_redir)); - self->redir[0] = _NR; + self->redir[0] = _NR; cmd_args = get_args(lst); self->args = cmd_args; self->cmd = ft_strdup(cmd_args[0]); create_redir(lst, self); - // debug - int i = -1; - ft_debug("==== CMD REDIR\n"); - while (self->files && self->files[++i]) - ft_debug("redi : [%d]%s\n",self->redir[i], self->files[i]); - ft_debug("==== CMD ARGS\n"); - i = -1; - while (self->args && self->args[++i]) - ft_debug("args : %s\n",self->args[i], self->args[i]); - ft_debug("==== CMD DONE\n\n"); + if (DEBUG) + { + i = -1; + ft_debug("==== CMD REDIR\n"); + while (self->files && self->files[++i]) + ft_debug("redi : [%d]%s\n", self->redir[i], self->files[i]); + ft_debug("==== CMD ARGS\n"); + i = -1; + while (self->args && self->args[++i]) + ft_debug("args : %s\n", self->args[i], self->args[i]); + ft_debug("==== CMD DONE\n\n"); + } } diff --git a/srcs/parsing/ast/cutll.c b/srcs/parsing/ast/cutll.c index 09bddbb..2ef8bc7 100644 --- a/srcs/parsing/ast/cutll.c +++ b/srcs/parsing/ast/cutll.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* cutll.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/31 09:56:34 by lderidde #+# #+# */ -/* Updated: 2025/01/31 14:05:12 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:56:37 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,7 @@ static void add_nodell(t_nodell **nodell, t_node *node) tmp->next->next = NULL; } -static t_node *get_node(t_node **lst, t_node *expected, int limiter) +static t_node *get_node(t_node **lst, t_node *expected, int limiter) { t_node *node; @@ -41,7 +41,8 @@ static t_node *get_node(t_node **lst, t_node *expected, int limiter) add_node_back(&node, (*lst)->val, (*lst)->token, (*lst)->pressision); (*lst) = (*lst)->next; } - while (limiter == -1 && (*lst) && ft_strncmp((*lst)->val, expected->val, ft_strlen((*lst)->val))) + while (limiter == -1 && (*lst) && ft_strncmp((*lst)->val, expected->val, + ft_strlen((*lst)->val))) { add_node_back(&node, (*lst)->val, (*lst)->token, (*lst)->pressision); (*lst) = (*lst)->next; @@ -54,34 +55,35 @@ t_nodell *cutll(t_node *lst, t_node *expected, size_t limiter) t_nodell *out; t_node *node; size_t i; - + t_nodell *tmp; + i = 0; out = NULL; while (i <= limiter) { node = get_node(&lst, expected, limiter); if (!node) - break; + break ; add_nodell(&out, node); - t_nodell *tmp = out; + tmp = out; while (tmp) tmp = tmp->next; - if(lst && lst->next) + if (lst && lst->next) lst = lst->next; i++; } return (out); } -void free_lltab(t_nodell *nodell) +void free_lltab(t_nodell *nodell) { - t_nodell *tmp; + t_nodell *tmp; - while (nodell) - { - free_linked_list(nodell->node); - tmp = nodell->next; - free(nodell); - nodell = tmp; - } + while (nodell) + { + free_linked_list(nodell->node); + tmp = nodell->next; + free(nodell); + nodell = tmp; + } } diff --git a/srcs/parsing/ast/free_ast.c b/srcs/parsing/ast/free_ast.c index 0fd63e0..5bd988e 100644 --- a/srcs/parsing/ast/free_ast.c +++ b/srcs/parsing/ast/free_ast.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* free_ast.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 14:39:28 by lderidde #+# #+# */ -/* Updated: 2025/02/07 09:20:16 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:57:21 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,20 +19,20 @@ static void free_redirs(t_ast_n *node) free_tab(node->files); } -static void free_cmd(t_ast_n *node) +static void free_cmd(t_ast_n *node) { free(node->cmd); free_redirs(node); - free_tab(node->args); + free_tab(node->args); } -static void free_pline(t_ast_n *node) +static void free_pline(t_ast_n *node) { - int i; + int i; - i = -1; - while (node->pline[++i]) - free_ast(node->pline[i]); + i = -1; + while (node->pline[++i]) + free_ast(node->pline[i]); } void free_ast(t_ast_n *node) @@ -48,9 +48,9 @@ void free_ast(t_ast_n *node) free_redirs(node); } else if (node->state == _PLINE) - free_pline(node); + free_pline(node); else - free_cmd(node); + free_cmd(node); free(node); } diff --git a/srcs/parsing/ast/redirections.c b/srcs/parsing/ast/redirections.c index c0fe0e6..845b5f2 100644 --- a/srcs/parsing/ast/redirections.c +++ b/srcs/parsing/ast/redirections.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* redirections.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 07:38:26 by nalebrun #+# #+# */ -/* Updated: 2025/02/05 11:41:23 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:57:42 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,33 +29,33 @@ t_redir get_redir(t_node *node) static void add_redir(t_redir redir, t_redir **redir_list) { - int i; - int j; - t_redir *tmp; + int i; + int j; + t_redir *tmp; - i = 0; - while ((*redir_list)[i] != _NR) - i++; - tmp = ft_calloc(i + 2, sizeof(t_redir)); - j = -1; - while ((*redir_list)[++j] != _NR) - tmp[j] = (*redir_list)[j]; - tmp[j++] = redir; - tmp[j] = _NR; - free(*redir_list); - *redir_list = tmp; + i = 0; + while ((*redir_list)[i] != _NR) + i++; + tmp = ft_calloc(i + 2, sizeof(t_redir)); + j = -1; + while ((*redir_list)[++j] != _NR) + tmp[j] = (*redir_list)[j]; + tmp[j++] = redir; + tmp[j] = _NR; + free(*redir_list); + *redir_list = tmp; } void create_redir(t_node *head, t_ast_n *self) { - t_redir redir; + t_redir redir; while (head) { while (head && get_redir(head) == _NR) head = head->next; if (!head) - break; + break ; redir = get_redir(head); add_redir(redir, &self->redir); add_to_tab(&self->files, head->next->val); @@ -65,7 +65,7 @@ void create_redir(t_node *head, t_ast_n *self) } } -int in_parenthesis(t_node *head) +int in_parenthesis(t_node *head) { int count; @@ -85,14 +85,14 @@ int in_parenthesis(t_node *head) void create_redir_subsh(t_node *head, t_ast_n *self) { - t_redir redir; + t_redir redir; while (head) { while (head && (get_redir(head) == _NR || in_parenthesis(head))) head = head->next; if (!head) - break; + break ; redir = get_redir(head); add_redir(redir, &self->redir); add_to_tab(&self->files, head->next->val); diff --git a/srcs/parsing/ast/subsh.c b/srcs/parsing/ast/subsh.c index b00863b..77568d9 100644 --- a/srcs/parsing/ast/subsh.c +++ b/srcs/parsing/ast/subsh.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* subsh.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/05 07:51:27 by lderidde #+# #+# */ -/* Updated: 2025/02/07 09:12:41 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 18:01:31 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,7 @@ t_node *remove_parentheses(t_node *lst) if (it->pressision == SUBSH_E) deepness -= 1; if (deepness == 0) - break; + break ; add_node_back(&out, str, it->token, it->pressision); free(str); it = it->next; @@ -40,23 +40,25 @@ t_node *remove_parentheses(t_node *lst) return (out); } -void create_subsh(t_ast_n *self, t_node *lst, t_msh *msh) +void create_subsh(t_ast_n *self, t_node *lst, t_msh *msh) { t_node *cutted; + int i; - self->sh = true; + self->sh = true; cutted = remove_parentheses(lst); self->left = create_ast_n(cutted, self, msh, self->sh); self->files = NULL; self->redir = ft_calloc(1, sizeof(t_redir)); - self->redir[0] = _NR; + self->redir[0] = _NR; create_redir_subsh(lst, self); - // debug - int i = -1; - ft_debug("==== SUBSH REDIR\n"); - while (self->redir[++i]) - ft_debug("subsh_redir : [%d]%s\n", self->redir[i], self->files[i]); - ft_debug("==== SUBSH DONE\n\n"); - - free_linked_list(cutted); + if (DEBUG) + { + i = -1; + ft_debug("==== SUBSH REDIR\n"); + while (self->redir[++i]) + ft_debug("subsh_redir : [%d]%s\n", self->redir[i], self->files[i]); + ft_debug("==== SUBSH DONE\n\n"); + free_linked_list(cutted); + } } diff --git a/srcs/parsing/ast/top_token.c b/srcs/parsing/ast/top_token.c index c31c12b..15bbd66 100644 --- a/srcs/parsing/ast/top_token.c +++ b/srcs/parsing/ast/top_token.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* top_token.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/31 17:14:26 by nalebrun #+# #+# */ -/* Updated: 2025/01/31 17:14:26 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:56:02 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,10 +27,9 @@ static int last_tok_redir(t_node *lst) { while (lst) { - if ((lst->next == NULL - || lst->next->pressision == D_RED_R - || lst->next->pressision == RED_R) - && !ft_strncmp(lst->val, ")", 1)) + if ((lst->next == NULL || lst->next->pressision == D_RED_R + || lst->next->pressision == RED_R) && !ft_strncmp(lst->val, ")", + 1)) return (1); lst = lst->next; } @@ -62,7 +61,7 @@ static t_node *find_token(char *tok, t_node *lst) return (NULL); } -t_node *get_top_token(t_node *lst, t_state *state) +t_node *get_top_token(t_node *lst, t_state *state) { *state = _SUBSH; if (!ft_strncmp(lst->val, "(", 1) && last_tok_subsh(lst)) @@ -82,7 +81,7 @@ t_node *get_top_token(t_node *lst, t_state *state) *state = _PLINE; return (find_token("|", lst)); } - else if (!ft_strncmp(lst->val, "(", 1) && last_tok_redir(lst)) + else if (!ft_strncmp(lst->val, "(", 1) && last_tok_redir(lst)) return (lst); else { diff --git a/srcs/parsing/drawio/drawio_ast_utils.c b/srcs/parsing/drawio/drawio_ast_utils.c index b7e842d..f15dae1 100644 --- a/srcs/parsing/drawio/drawio_ast_utils.c +++ b/srcs/parsing/drawio/drawio_ast_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* drawio_ast_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/29 09:21:09 by nalebrun #+# #+# */ -/* Updated: 2025/01/29 09:21:09 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 18:02:51 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,21 +31,6 @@ const char *translate_state(t_state state) return (out); } -// const char *translate_redir(t_redir redir) -// { -// const char *out; -// -// if (redir == _RED_L) -// out = "redir : RED_L "; -// else if (redir == _RED_R) -// out = "redir : RED_R "; -// else if (redir == _RED_DR) -// out = "redir : _RED_DR "; -// else -// out = "Not redirected "; -// return (out); -// } - t_dio_node get_cmd_txt(t_ast_n *node) { t_dio_node txt; @@ -59,9 +44,6 @@ t_dio_node get_cmd_txt(t_ast_n *node) args = ft_tabstr(node->args); txt.args = ft_sprintf("%s%s%s", NL, args, NL); free(args); - // txt.redir = translate_redir(node->redir); - // txt.inf = ft_sprintf("Infile : %s%s", node->infile, NL); - // txt.outf = ft_sprintf("Outfile : %s", node->outfile); txt.files = ft_sprintf("redir: UNCHECKED\n"); } else diff --git a/srcs/parsing/drawio/drawio_print_ast.c b/srcs/parsing/drawio/drawio_print_ast.c index d75f111..07e0096 100644 --- a/srcs/parsing/drawio/drawio_print_ast.c +++ b/srcs/parsing/drawio/drawio_print_ast.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* drawio_print_ast.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/29 09:54:31 by lderidde #+# #+# */ -/* Updated: 2025/02/07 09:09:01 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:27:47 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,16 +15,15 @@ char *get_node_txt(t_ast_n *node) { t_dio_node txt; - static char *subsh; - char *out; + static char *subsh; + char *out; txt = get_cmd_txt(node); - if (node->sh == true) - subsh = ft_strdup(" (subsh) "); - else - subsh = ft_strdup(""); - out = ft_sprintf("%s%s%s%s%s", txt.st, txt.cmd, txt.args, - subsh, txt.files); + if (node->sh == true) + subsh = ft_strdup(" (subsh) "); + else + subsh = ft_strdup(""); + out = ft_sprintf("%s%s%s%s%s", txt.st, txt.cmd, txt.args, subsh, txt.files); free(txt.cmd); free(txt.args); free(txt.files); diff --git a/srcs/parsing/drawio/drawio_utils.c b/srcs/parsing/drawio/drawio_utils.c index 4723d03..8ba30b9 100644 --- a/srcs/parsing/drawio/drawio_utils.c +++ b/srcs/parsing/drawio/drawio_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* drawio_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/27 15:09:16 by nalebrun #+# #+# */ -/* Updated: 2025/01/27 15:09:16 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:36:08 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,15 @@ static int get_char_count(char *str, char c) return (count); } +void write_ampercent(char *out) +{ + out[0] = '&'; + out[1] = 'a'; + out[2] = 'm'; + out[3] = 'p'; + out[4] = ';'; +} + char *replace_ampercent(char *src) { int i; @@ -43,11 +52,7 @@ char *replace_ampercent(char *src) { if (src[i] == '&') { - out[j] = '&'; - out[j + 1] = 'a'; - out[j + 2] = 'm'; - out[j + 3] = 'p'; - out[j + 4] = ';'; + write_ampercent(&out[j]); j += 5; } else @@ -58,6 +63,18 @@ char *replace_ampercent(char *src) return (out); } +void write_left_redi(char *out) +{ + out[0] = '&'; + out[1] = 'a'; + out[2] = 'm'; + out[3] = 'p'; + out[4] = ';'; + out[5] = 'l'; + out[6] = 't'; + out[7] = ';'; +} + char *replace_left_red(char *src) { int i; @@ -73,14 +90,7 @@ char *replace_left_red(char *src) { if (src[i] == '<') { - out[j] = '&'; - out[j + 1] = 'a'; - out[j + 2] = 'm'; - out[j + 3] = 'p'; - out[j + 4] = ';'; - out[j + 5] = 'l'; - out[j + 6] = 't'; - out[j + 7] = ';'; + write_left_redi(&out[j]); j += 8; } else diff --git a/srcs/parsing/parser.c b/srcs/parsing/parser.c index 1c0d856..efdb80a 100644 --- a/srcs/parsing/parser.c +++ b/srcs/parsing/parser.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* parser.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/15 08:23:41 by nalebrun #+# #+# */ -/* Updated: 2025/02/07 12:08:40 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:59:43 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,11 +36,11 @@ void truncate_comment(char *str) } } -t_ast_n *parser(char *input, t_msh *msh) +t_ast_n *parser(char *input, t_msh *msh) { t_node *lst; t_ast_n *ast; - int dio; + int dio; truncate_comment(input); lst = tokenize(input); @@ -60,7 +60,6 @@ t_ast_n *parser(char *input, t_msh *msh) { gen_dio_ast(ast, dio); drawio_end_file(dio); - ft_debug(" draw.io file generated !\n"); } free_linked_list(lst); return (ast); diff --git a/srcs/parsing/syntax.c b/srcs/parsing/syntax.c index 762294c..f783a12 100644 --- a/srcs/parsing/syntax.c +++ b/srcs/parsing/syntax.c @@ -3,46 +3,45 @@ /* ::: :::::::: */ /* syntax.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/07 12:08:53 by nalebrun #+# #+# */ -/* Updated: 2025/02/07 12:08:53 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:58:30 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../includes/parser/parsing.h" -int only_operator(t_node *head) +int only_operator(t_node *head) { if (!head->next && head->token == OPERATOR) return (1); return (0); } -int syntax_err_mess(char *token) +int syntax_err_mess(char *token) { - ft_fprintf(2, "minishell : syntax error near unexpected token `%s'\n", token); + ft_fprintf(2, "minishell : syntax error near unexpected token `%s'\n", + token); return (1); } -int unexpected_token(t_node *node) +int unexpected_token(t_node *node) { - if (!ft_strncmp(node->val, "%", 1) - || (!ft_strncmp(node->val, "&", 1) && ft_strncmp(node->val, "&&", 2)) - || !ft_strncmp(node->val, ";", 1) + if (!ft_strncmp(node->val, "%", 1) || (!ft_strncmp(node->val, "&", 1) + && ft_strncmp(node->val, "&&", 2)) || !ft_strncmp(node->val, ";", 1) || !ft_strncmp(node->val, "[", 1) || !ft_strncmp(node->val, "]", 1) - || !ft_strncmp(node->val, "{", 1) || !ft_strncmp(node->val, "}", 1) - ) + || !ft_strncmp(node->val, "{", 1) || !ft_strncmp(node->val, "}", 1)) return (1); return (0); } -int syntax_error(t_node *head) +int syntax_error(t_node *head) { - t_node *cpy; + t_node *cpy; if (only_operator(head)) - return(syntax_err_mess(head->val)); + return (syntax_err_mess(head->val)); cpy = head; while (cpy) { @@ -50,6 +49,5 @@ int syntax_error(t_node *head) return (syntax_err_mess(cpy->val)); cpy = cpy->next; } - return (0); } diff --git a/srcs/parsing/tokenizer/linked_list.c b/srcs/parsing/tokenizer/linked_list.c index 19344d7..f9b171e 100644 --- a/srcs/parsing/tokenizer/linked_list.c +++ b/srcs/parsing/tokenizer/linked_list.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* linked_list.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/15 13:38:49 by lderidde #+# #+# */ -/* Updated: 2025/01/31 13:20:13 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:27:00 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,7 @@ t_node *create_node(char *val, t_token token) int add_node_back(t_node **head, char *val, t_token token, t_pres pres) { - t_node *tmp; + t_node *tmp; tmp = *head; if (!val) diff --git a/srcs/parsing/tokenizer/token_and_pres.c b/srcs/parsing/tokenizer/token_and_pres.c index 543f8a7..fe1bf8d 100644 --- a/srcs/parsing/tokenizer/token_and_pres.c +++ b/srcs/parsing/tokenizer/token_and_pres.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* token_and_pres.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/21 08:54:32 by nalebrun #+# #+# */ -/* Updated: 2025/01/21 08:54:32 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 17:26:33 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,22 +39,22 @@ t_token get_token(char *str) { t_token token; - if (!ft_strncmp(str, "&", 1) || !ft_strncmp(str, "|", 1) - || !ft_strncmp(str, "(", 1) || !ft_strncmp(str, ")", 1) - || !ft_strncmp(str, "<", 1) || !ft_strncmp(str, ">", 1)) + if (!ft_strncmp(str, "&", 1) || !ft_strncmp(str, "|", 1) || !ft_strncmp(str, + "(", 1) || !ft_strncmp(str, ")", 1) || !ft_strncmp(str, "<", 1) + || !ft_strncmp(str, ">", 1)) token = OPERATOR; else token = WORD; return (token); } -t_pres get_pressision(char *s, t_token token, - t_token last_token, t_pres last_pres) +t_pres get_pressision(char *s, t_token token, t_token last_token, + t_pres last_pres) { if (token == OPERATOR) return (get_operator(s)); - else if (last_token == OPERATOR && (last_pres == RED_R - || last_pres == RED_L || last_pres == D_RED_R)) + else if (last_token == OPERATOR && (last_pres == RED_R || last_pres == RED_L + || last_pres == D_RED_R)) return (RED_FILE); else if (last_token == OPERATOR && last_pres == HEREDOC) return (LIM); diff --git a/srcs/parsing/tokenizer/tokenizer.c b/srcs/parsing/tokenizer/tokenizer.c index 8f86731..d6c587d 100644 --- a/srcs/parsing/tokenizer/tokenizer.c +++ b/srcs/parsing/tokenizer/tokenizer.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* tokenizer.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: lderidde +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/15 13:27:57 by lderidde #+# #+# */ -/* Updated: 2025/01/31 13:24:28 by lderidde ### ########.fr */ +/* Updated: 2025/02/07 17:26:04 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,7 +45,8 @@ static void set_token(t_node *head) while (it != NULL) { it->token = get_token(it->val); - it->pressision = get_pressision(it->val, it->token, last_token, last_pres); + it->pressision = get_pressision(it->val, it->token, last_token, + last_pres); last_token = it->token; last_pres = it->pressision; it = it->next; diff --git a/srcs/parsing/tokenizer/tokenizer_utils.c b/srcs/parsing/tokenizer/tokenizer_utils.c index 0e142a0..52b740a 100644 --- a/srcs/parsing/tokenizer/tokenizer_utils.c +++ b/srcs/parsing/tokenizer/tokenizer_utils.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* tokenizer_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: nalebrun +#+ +:+ +#+ */ +/* By: nalebrun +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/22 14:24:05 by nalebrun #+# #+# */ -/* Updated: 2025/01/22 14:24:05 by nalebrun ### ########.fr */ +/* Updated: 2025/02/07 18:04:31 by nalebrun ### ########.fr */ /* */ /* ************************************************************************** */ @@ -76,8 +76,6 @@ int trim_nodes(t_node *head) if (!in_quote) { tmp = ft_strtrim(it->val, " \t\n"); - if (!tmp) - return (0); free(it->val); it->val = tmp; }