From f8a4e1e09167272a11d0fc6e1fa5507afcb2fdb8 Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Tue, 4 Feb 2025 20:46:35 +0100 Subject: [PATCH] feat: parse input, get list --- inc/minishell.h | 1 + src/prompt.c | 12 ++---------- src/tokenizer/tokenizer.c | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/inc/minishell.h b/inc/minishell.h index 68c4f17..a501c65 100644 --- a/inc/minishell.h +++ b/inc/minishell.h @@ -200,6 +200,7 @@ t_lexer *ft_lexer_new(const char *input); void ft_lexer_free(t_lexer *lexer); void ft_lexer_readchar(t_lexer *lexer); char *ft_lexer_readword(t_lexer *lexer); +t_list *ft_parse_input(t_lexer *lexer); /** * Token */ diff --git a/src/prompt.c b/src/prompt.c index f793030..0ed65bd 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -84,7 +84,6 @@ int main(int argc, char **argv, char **envp) // char **env; // t_enviroment *enviroment = NULL; t_lexer *lexer; - t_token *token; t_list *list; // while (*envp != NULL) @@ -95,17 +94,10 @@ int main(int argc, char **argv, char **envp) // } lexer = ft_lexer_new(argv[1]); - list = NULL; - while (TRUE) - { - token = ft_token_next(lexer); - if (token->type == T_EOF) - break; - ft_lstadd_back(&list, ft_lstnew(token)); - } + list = ft_parse_input(lexer); ft_lstiter(list, print_list); + ft_lstclear(&list, ft_clear_tokenlist); - ft_token_free(token); ft_lexer_free(lexer); // print_enviroment(enviroment); return 0; diff --git a/src/tokenizer/tokenizer.c b/src/tokenizer/tokenizer.c index f60497d..3ef2f5d 100644 --- a/src/tokenizer/tokenizer.c +++ b/src/tokenizer/tokenizer.c @@ -6,12 +6,29 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/04 16:07:58 by qmennen #+# #+# */ -/* Updated: 2025/02/04 20:28:00 by qmennen ### ########.fr */ +/* Updated: 2025/02/04 20:45:45 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" +t_list *ft_parse_input(t_lexer *lexer) +{ + t_list *list; + t_token *token; + + list = NULL; + while (TRUE) + { + token = ft_token_next(lexer); + if (token->type == T_EOF || token->type == T_ERROR) + break; + ft_lstadd_back(&list, ft_lstnew(token)); + } + ft_token_free(token); + return (list); +} + t_token *ft_token_next(t_lexer *lexer) { t_token *token;