From e173d07bdee8650ad8afcaa1e222c963f32f9bb0 Mon Sep 17 00:00:00 2001 From: nass1pro Date: Mon, 13 Jul 2020 10:43:24 +0200 Subject: update parent stick --- src/lexer/lexer.c | 20 ----------------- src/lexer/token.c | 5 +++-- src/lexer/trim.c | 21 ++++++++++++++++- src/main.c | 67 ++++++++++++++++++++++++++++--------------------------- 4 files changed, 57 insertions(+), 56 deletions(-) (limited to 'src') diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c index dd34654..8ee7048 100644 --- a/src/lexer/lexer.c +++ b/src/lexer/lexer.c @@ -69,25 +69,6 @@ int check_input_out(char *input) return(0); } -/* t_token *lexer_lst_token_str(char *input, int i, int j) */ -/* { */ -/* t_token *lst_token; */ -/* */ -/* if (!(lst_token = malloc(sizeof(t_token) * 1))) */ -/* return (NULL); */ -/* lst_token->tag = 0; */ -/* lst_token->content = NULL; */ -/* if (!(lst_token->content = malloc(sizeof(char) * j + 1))) */ -/* return(0); */ -/* if (!(ft_strlcpy(lst_token->content, &input[i], j + 1))) */ -/* { */ -/* free(lst_token); */ -/* return(0); */ -/* } */ -/* */ -/* return (lst_token); */ -/* } */ - enum e_token_tag token_verif_stick(t_token *lst_token) { int i; @@ -151,7 +132,6 @@ static t_ftlst *create_token_list(char *input, t_ftlst **lst) { j = 0; j += check_input(&input[i]); - /* lst_token = lexer_lst_token_str(input,i,j); */ lst_token = token_new_until(0, input + i, j); lst_token = push_token_enum(lst_token); new = ft_lstnew(lst_token); diff --git a/src/lexer/token.c b/src/lexer/token.c index 5465b6b..f7c1691 100644 --- a/src/lexer/token.c +++ b/src/lexer/token.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* token.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: charles +#+ +:+ +#+ */ +/* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/09 13:38:08 by charles #+# #+# */ -/* Updated: 2020/06/23 08:55:32 by charles ### ########.fr */ +/* Updated: 2020/07/13 09:58:18 by nahaddac ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,7 @@ t_token *token_new(enum e_token_tag tag, char *content) { size_t len; + len = 0; if (content != NULL) len = ft_strlen(content); return (token_new_until(tag, content, len)); diff --git a/src/lexer/trim.c b/src/lexer/trim.c index 6c435d5..f47aa6d 100644 --- a/src/lexer/trim.c +++ b/src/lexer/trim.c @@ -1,6 +1,25 @@ #include "lexer.h" +t_ftlst *stick_parent(t_ftlst *lst) +{ + t_ftlst *first; + t_token *tk; + + first = lst; + while (lst != NULL) + { + tk = lst->data; + if (tk->tag & TAG_PARENT_OPEN || tk->tag & TAG_PARENT_CLOSE) + { + if (ft_strlen(tk->content) >= 2) + tk->tag = tk->tag | TAG_STICK; + } + lst = lst->next; + } + return (first); +} + char *del_space(t_token *tk) { int i; @@ -64,5 +83,5 @@ t_ftlst *lexe_trim_out(t_ftlst *lst) } lst = lst->next; } - return (first); + return (stick_parent(first)); } diff --git a/src/main.c b/src/main.c index b375c16..ee57e0b 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */ -/* Updated: 2020/06/19 19:12:42 by charles ### ########.fr */ +/* Updated: 2020/07/13 09:58:46 by nahaddac ### ########.fr */ /* */ /* ************************************************************************** */ @@ -42,10 +42,10 @@ int main(int argc, char **argv, char **envp) if (lex_out == NULL) return (1); - /* ft_lstiter(lex_out, token_debug); */ - t_ret *parser_out = parse(lex_out); + ft_lstiter(lex_out, token_debug); + //t_ret *parser_out = parse(lex_out); - /* t_ret *parser_out = parse(lex_out); */ + //t_ret *parser_out = parse(lex_out); /* if (parser_out == NULL || parser_out->unexpected != NULL) */ /* return (1); */ @@ -59,37 +59,38 @@ int main(int argc, char **argv, char **envp) /* printf("===redirs===\n"); */ /* ft_lstiter(parser_out->ast->redirs, token_debug); */ - int fds[2] = {MS_NO_FD, MS_NO_FD}; - int eval_out = eval(fds, env, path, parser_out->ast); - (void)eval_out; + //int fds[2] = {MS_NO_FD, MS_NO_FD}; + //int eval_out = eval(fds, env, path, parser_out->ast); + //(void)eval_out; } - else - { - int ret; - char *line; - - printf("> "); - fflush(stdout); - while ((ret = ft_getline(STDOUT_FILENO, &line)) == FTGL_OK) - { - t_ftlst *lex_out = lexer(line); - if (lex_out == NULL) - return (1); - - t_ret *parser_out = parse(lex_out); - - int fds[2] = {MS_NO_FD, MS_NO_FD}; - int eval_out = eval(fds, env, path, parser_out->ast); - (void)eval_out; - printf("> "); - fflush(stdout); - } - } - - ft_htdestroy(path, free); - ft_vecdestroy(env, free); - return (0); } +// else +// { +// int ret; +// char *line; +// +// printf("> "); +// fflush(stdout); +// while ((ret = ft_getline(STDOUT_FILENO, &line)) == FTGL_OK) +// { +// t_ftlst *lex_out = lexer(line); +// if (lex_out == NULL) +// return (1); +// +// t_ret *parser_out = parse(lex_out); +// +// int fds[2] = {MS_NO_FD, MS_NO_FD}; +// int eval_out = eval(fds, env, path, parser_out->ast); +// (void)eval_out; +// printf("> "); +// fflush(stdout); +// } +// } +// +// ft_htdestroy(path, free); +// ft_vecdestroy(env, free); +// return (0); +// } -- cgit