diff options
| author | Dominik Kaiser | 2024-09-17 19:25:13 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-09-17 19:25:13 +0200 |
| commit | 1fec66236f1811a3eeac673d0002fe8d9d3d8835 (patch) | |
| tree | 8e007570a2109a3cb756c2d699ff4f6a20b75317 /src/parser.c | |
| parent | e8891daeb2e9cf26dc6be1f4d3693734d7a9c5c1 (diff) | |
| download | minishell-1fec66236f1811a3eeac673d0002fe8d9d3d8835.tar.gz minishell-1fec66236f1811a3eeac673d0002fe8d9d3d8835.zip | |
Fix error message printing
Diffstat (limited to 'src/parser.c')
| -rw-r--r-- | src/parser.c | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/src/parser.c b/src/parser.c index 6993a1f..06c1df7 100644 --- a/src/parser.c +++ b/src/parser.c @@ -6,43 +6,29 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/29 15:53:29 by dkaiser #+# #+# */ -/* Updated: 2024/09/17 15:06:55 by dkaiser ### ########.fr */ +/* Updated: 2024/09/17 19:03:48 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ +#include "libft.h" #include "minishell.h" #include "token.h" static t_token *find_token_by_type(t_token *tokens, int type); t_token *split_at_first(t_token **tokens, int type); static t_node *parse_statement(t_token *tokens); -static void free_node_wrapper(void *node); t_list *parse(t_token *tokens) { - t_list *result; - t_list *current; - t_token *current_tokens; + t_node *result; - result = NULL; - current_tokens = split_at_first(&tokens, NEWLINE_TOKEN); - while (current_tokens != NULL) - { - if (result == NULL) - { - current = ft_lstnew(parse_statement(current_tokens)); - result = current; - } - else - { - current->next = ft_lstnew(parse_statement(current_tokens)); - current = current->next; - } - if (current == NULL) - return (ft_lstclear(&result, free_node_wrapper), NULL); - current_tokens = split_at_first(&tokens, NEWLINE_TOKEN); - } - return (result); + if ((*tokens).type == PIPE_TOKEN) + result = NULL; + else + result = parse_statement(tokens); + if (result == NULL) + printf("Parsing error.\n"); + return (ft_lstnew(result)); } static t_node *parse_statement(t_token *tokens) @@ -53,7 +39,6 @@ static t_node *parse_statement(t_token *tokens) if (left_side_tokens == NULL) { free_tokens(tokens); - printf("Parsing error.\n"); return (NULL); } else if (tokens != NULL) @@ -97,8 +82,3 @@ static t_token *find_token_by_type(t_token *tokens, int type) } return (NULL); } - -static void free_node_wrapper(void *node) -{ - free_node((t_node *)node); -} |
