From 00bce5ad1d5ac92d20617a9eb2647365bf87cab2 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 9 Oct 2020 16:13:50 +0200 Subject: Splitting preprocessing, Added parsed error helper --- src/lexer/lexer.c | 12 +++++------- src/lexer/tok_lst.c | 16 ++++++++++------ src/lexer/trim.c | 6 ++---- src/lexer/utils.c | 26 +++++++++++--------------- 4 files changed, 28 insertions(+), 32 deletions(-) (limited to 'src/lexer') diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c index 9b947f4..5df63ba 100644 --- a/src/lexer/lexer.c +++ b/src/lexer/lexer.c @@ -6,15 +6,14 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:25 by nahaddac #+# #+# */ -/* Updated: 2020/10/09 12:29:32 by cacharle ### ########.fr */ +/* Updated: 2020/10/09 15:12:51 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" #include -// len until meaningful character for non quoted str -int len_until_sep(char *input) +int len_until_sep(char *input) { int i; @@ -40,7 +39,6 @@ int len_until_sep(char *input) return (i); } -// token content length int tok_len(char *input) { int i; @@ -74,10 +72,10 @@ int tok_len(char *input) ** return all token */ -t_tok_lst *create_token_list(char *input, t_tok_lst **lst) +t_tok_lst *create_token_list(char *input, t_tok_lst **lst) { t_tok_lst *tok; - size_t i; + size_t i; size_t j; size_t len; @@ -105,7 +103,7 @@ t_tok_lst *create_token_list(char *input, t_tok_lst **lst) ** \return The created tokens or NULL on error */ -int lexer(char *input, t_tok_lst **out) +int lexer(char *input, t_tok_lst **out) { int status; diff --git a/src/lexer/tok_lst.c b/src/lexer/tok_lst.c index 9ae0ce1..89ab120 100644 --- a/src/lexer/tok_lst.c +++ b/src/lexer/tok_lst.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/08/27 09:32:58 by charles #+# #+# */ -/* Updated: 2020/10/08 17:38:59 by cacharle ### ########.fr */ +/* Updated: 2020/10/09 15:14:38 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,8 @@ t_tok_lst *tok_lst_new(enum e_tok tag, char *content) { - return (tok_lst_new_until(tag, content, content == NULL ? 0 : ft_strlen(content))); + return (tok_lst_new_until( + tag, content, content == NULL ? 0 : ft_strlen(content))); } /* @@ -25,14 +26,15 @@ t_tok_lst *tok_lst_new(enum e_tok tag, char *content) ** \return An allocated tok_lst or NULL on error */ -t_tok_lst *tok_lst_new_until(enum e_tok tag, char *content, size_t n) +t_tok_lst *tok_lst_new_until( + enum e_tok tag, char *content, size_t n) { t_tok_lst *ret; if ((ret = malloc(sizeof(t_tok_lst))) == NULL) return (NULL); if (content == NULL) - ret->content = NULL; + ret->content = NULL; else if ((ret->content = ft_strndup(content, n)) == NULL) { free(ret); @@ -48,7 +50,8 @@ void tok_lst_push_back(t_tok_lst **tokens, t_tok_lst *pushed) ft_lstpush_back((t_ftlst**)tokens, (t_ftlst*)pushed); } -t_tok_lst *tok_lst_push_front(t_tok_lst **tokens, t_tok_lst *pushed) +t_tok_lst *tok_lst_push_front( + t_tok_lst **tokens, t_tok_lst *pushed) { if (pushed == NULL) return (NULL); @@ -56,7 +59,8 @@ t_tok_lst *tok_lst_push_front(t_tok_lst **tokens, t_tok_lst *pushed) return (*tokens); } -void tok_lst_pop_front(t_tok_lst **tokens, void (*del)(void*)) +void tok_lst_pop_front( + t_tok_lst **tokens, void (*del)(void*)) { ft_lstpop_front((t_ftlst**)tokens, del); } diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 0f3279b..d0ba90a 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -6,13 +6,11 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:36 by nahaddac #+# #+# */ -/* Updated: 2020/10/07 10:36:41 by cacharle ### ########.fr */ +/* Updated: 2020/10/09 15:17:45 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ - #include "lexer.h" -#include void del_space(char *str) { @@ -32,7 +30,7 @@ void del_space(char *str) } } -int del_quote(char *str) +int del_quote(char *str) { size_t i; size_t quote_counter; diff --git a/src/lexer/utils.c b/src/lexer/utils.c index 0b7baa3..624b460 100644 --- a/src/lexer/utils.c +++ b/src/lexer/utils.c @@ -6,14 +6,13 @@ /* By: nahaddac +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:15 by nahaddac #+# #+# */ -/* Updated: 2020/10/08 14:11:51 by cacharle ### ########.fr */ +/* Updated: 2020/10/09 15:24:31 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "lexer.h" -// return token tag corresponding to string id -enum e_tok tok_assign_tag(char *content) +enum e_tok tok_assign_tag(char *content) { if (content[0] == ';') return (TAG_END); @@ -21,7 +20,7 @@ enum e_tok tok_assign_tag(char *content) return (TAG_AND); if (ft_strncmp(content, "||", 2) == 0) return (TAG_OR); - if(content[0] == '|') + if (content[0] == '|') return (TAG_PIPE); if (content[0] == '>') return (TAG_REDIR_OUT); @@ -42,14 +41,13 @@ enum e_tok tok_assign_tag(char *content) ** a la fin (char *)tk->tok ne figure pas d'espace. */ -enum e_tok tok_assign_stick(t_tok_lst *tok) +enum e_tok tok_assign_stick(t_tok_lst *tok) { int i; i = ft_strlen(tok->content); - if (i > 0) - if (ft_isblank(tok->content[i - 1])) - return (tok->tag); + if (i > 0 && ft_isblank(tok->content[i - 1])) + return (tok->tag); return (tok->tag | TAG_STICK); } @@ -58,7 +56,8 @@ enum e_tok tok_assign_stick(t_tok_lst *tok) ** la chaine de character est un str où '' où '' ** \note the loop after ft_strpbrk is to search again if the quote was escaped */ -enum e_tok tok_assign_str(t_tok_lst *tok) + +enum e_tok tok_assign_str(t_tok_lst *tok) { char *found; @@ -74,20 +73,17 @@ enum e_tok tok_assign_str(t_tok_lst *tok) return (tok_assign_stick(tok)); } - -// check is char is separator -int lexer_sep(char c) +int lexer_sep(char c) { return (ft_strchr(";&|><()", c) != NULL); } -// number of starting space character -int lexer_space(char *input) +int lexer_space(char *input) { return (ft_strspn(input, " \t")); } -int quote_len(char *input, int i) +int quote_len(char *input, int i) { char quote_type; -- cgit