From 490237aece240c05b5a9035665a88327e1be87ed Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Sun, 13 Sep 2020 18:15:47 +0200 Subject: Refactoring lexer/trim by removing the unecessary allocation --- include/lexer.h | 4 ++-- src/lexer/lexer.c | 4 ++-- src/lexer/trim.c | 63 ++++++++++++++++++++++++------------------------------- 3 files changed, 31 insertions(+), 40 deletions(-) diff --git a/include/lexer.h b/include/lexer.h index 7f31699..f4d4648 100644 --- a/include/lexer.h +++ b/include/lexer.h @@ -6,7 +6,7 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/19 10:51:26 by nahaddac #+# #+# */ -/* Updated: 2020/09/13 17:33:53 by charles ### ########.fr */ +/* Updated: 2020/09/13 18:06:35 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -113,6 +113,6 @@ int quote_len(char *input, int i); ** trim.c */ -t_tok_lst *lexer_trim_out(t_tok_lst *lst); +void lexer_trim(t_tok_lst *lst); #endif diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c index 907dc70..d8e8a6e 100644 --- a/src/lexer/lexer.c +++ b/src/lexer/lexer.c @@ -6,7 +6,7 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:25 by nahaddac #+# #+# */ -/* Updated: 2020/09/13 17:45:30 by charles ### ########.fr */ +/* Updated: 2020/09/13 18:12:03 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -109,7 +109,7 @@ t_tok_lst *lexer(char *input) return (NULL); lst = NULL; lst = create_token_list(input, &lst); - lst = lexer_trim_out(lst); + lexer_trim(lst); return (lst); } diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 1a2c88d..b343d69 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -6,81 +6,72 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:36 by nahaddac #+# #+# */ -/* Updated: 2020/09/13 10:58:26 by nahaddac ### ########.fr */ +/* Updated: 2020/09/13 18:14:59 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -char *del_space(t_tok_lst *tok) +void del_space(char *str) { - int i; + int i; - i = ft_strlen(tok->content); - if(ft_isblank(tok->content[i - 1])) + i = ft_strlen(str); + if (ft_isblank(str[i - 1])) { i -= 1; - while(ft_isblank(tok->content[i])) + while (ft_isblank(str[i])) { - if (tok->content[i - 1] == '\\') - break; + if (str[i - 1] == '\\') + break ; i--; } - tok->content = ft_strsubf(tok->content, 0, i + 1); - return (tok->content); + str[i + 1] = '\0'; } - return(tok->content); } -char *del_quote(char *str) +void del_quote(char *str) { - int i; - i = 0; + int i; + i = 0; if (str[0] == '\'') - while(str[i++] != '\0') + while (str[i++] != '\0') { - if(str[i] == '\\') - i+=2; + if (str[i] == '\\') + i += 2; if (str[i] == '\'') - break; + break ; } else if (str[0] == '"') - while(str[i++] != '\0') + while (str[i++] != '\0') { - if(str[i] == '\\') - i+=2; + if (str[i] == '\\') + i += 2; if (str[i] == '"') - break; + break ; } - if(str[i] != '\'' && str[i] != '"') - return str; - return (ft_strsubf(str, 1, i - 1)); + str[i] = '\0'; + ft_memmove(str, str + 1, ft_strlen(str + 1) + 1); } -t_tok_lst *lexer_trim_out(t_tok_lst *tokens) +void lexer_trim(t_tok_lst *tokens) { - t_tok_lst *first; - - first = tokens; while (tokens != NULL) { if (tokens->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE)) { - tokens->content = del_quote(tokens->content); + del_quote(tokens->content); if (tokens->next == NULL) - if (tokens->tag & TAG_STICK) - tokens->tag -= TAG_STICK; + tokens->tag &= ~TAG_STICK; } else { - tokens->content = del_space(tokens); + del_space(tokens->content); if (tokens->next == NULL) - if (tokens->tag & TAG_STICK) - tokens->tag -= TAG_STICK; + tokens->tag &= ~TAG_STICK; } tokens = tokens->next; } - return (first); } -- cgit