aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer/lexer.c4
-rw-r--r--src/lexer/trim.c63
2 files changed, 29 insertions, 38 deletions
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 <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}