diff --git a/src/lexer/lexer_token_next.c b/src/lexer/lexer_token_next.c index d3c1181..12d571c 100644 --- a/src/lexer/lexer_token_next.c +++ b/src/lexer/lexer_token_next.c @@ -11,7 +11,6 @@ /* ************************************************************************** */ #include "minishell.h" -#include "typedef.h" static t_token_type get_word_type(char c) { @@ -23,6 +22,21 @@ static t_token_type get_word_type(char c) return (T_WORD); } +static t_token *process_word(t_minishell *msh, t_lexer *lexer, int pos) +{ + t_token_type word_type; + t_token *token; + char *word; + + word_type = get_word_type(lexer->current_char); + word = lexer_readword(msh, lexer); + if (!word) + return (token_new(msh, T_ERROR, &(lexer->current_char), pos)); + token = token_new(msh, word_type, word, pos); + free_safe(msh, (void **)&word); + return (token); +} + /** * @brief Retrieves the next token from the lexer. * @@ -45,32 +59,23 @@ static t_token_type get_word_type(char c) t_token *ft_token_next(t_minishell *msh, t_lexer *lexer) { t_token *token; - t_token_type word_type; - char *word; int current_pos; + char c; token = NULL; while (ft_isspace(lexer->current_char)) lexer_readchar(lexer); current_pos = lexer->pos; - if (lexer->current_char == '\0') + c = lexer->current_char; + if (c == '\0') token = token_new(msh, T_EOF, NULL, current_pos); - else if (lexer->current_char == '<' || lexer->current_char == '>' - || lexer->current_char == '|') + else if (c == '<' || c == '>' + || c == '|') token = token_parse(msh, lexer); else if (ft_isprint(lexer->current_char)) - { - word_type = get_word_type(lexer->current_char); - word = lexer_readword(msh, lexer); - if (!word) - return (token_new(msh, T_ERROR, &lexer->current_char, current_pos)); - token = token_new(msh, word_type, word, current_pos); - free_safe(msh, (void **)&word); - } + token = process_word(msh, lexer, current_pos); else - { token = token_new(msh, T_ERROR, NULL, current_pos); - printf("token->type: %d\n", token->type); - } + c = lexer->current_char; return (token); }