diff --git a/42sh/Makefile b/42sh/Makefile index 344b95ff..1f9b5d6f 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -130,8 +130,6 @@ lexer/lexer_backslash.c\ lexer/lexer_comment.c\ lexer/lexer_default.c\ lexer/lexer_delim.c\ -lexer/lexer_do.c\ -lexer/lexer_done.c\ lexer/lexer_dquote.c\ lexer/lexer_fi.c\ lexer/lexer_great.c\ @@ -139,7 +137,6 @@ lexer/lexer_greatand.c\ lexer/lexer_if.c\ lexer/lexer_less.c\ lexer/lexer_lessand.c\ -lexer/lexer_list.c\ lexer/lexer_newline.c\ lexer/lexer_number.c\ lexer/lexer_quote.c\ @@ -147,7 +144,6 @@ lexer/lexer_sep.c\ lexer/lexer_special.c\ lexer/lexer_then.c\ lexer/lexer_var.c\ -lexer/lexer_while.c\ lexer/lexer_word.c\ lexer/reduce_bquotes.c\ lexer/reduce_parens.c\ @@ -168,13 +164,13 @@ main/lib_expansion.c\ main/main.c\ main/read_script.c\ main/shell_exit.c\ -main/shell_get_ast.c\ main/shell_get_avdata.c\ main/shell_get_opts.c\ main/shell_init.c\ main/shell_script.c\ main/sig_handler.c\ parser/ft_parse.c\ +parser/get_instruction.c \ parser/parse_dgreat.c\ parser/parse_dless.c\ parser/parse_do.c\ diff --git a/42sh/ffile2 b/42sh/file1 similarity index 100% rename from 42sh/ffile2 rename to 42sh/file1 diff --git a/42sh/file2 b/42sh/file2 index 32524ff3..cfa36b69 100644 --- a/42sh/file2 +++ b/42sh/file2 @@ -1 +1,9 @@ -/Users/ariard/Projects/42sh-2 +hello +hello +hello +hello +hello +hello +hello +hello +hello diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 8ada16e5..6705e201 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:31:45 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:47:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 5145897a..67731f84 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:42:21 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:02:27 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ typedef long long t_type; struct s_parser { t_type type; - int (*f)(t_list **list_ast, t_btree **ast, + int (*f)(t_btree **ast, t_list **start, t_list **token); }; @@ -59,37 +59,24 @@ struct s_astnode extern t_parser g_parser[]; -int ft_parse(t_list **list_ast, t_btree **ast, t_list **token); +int ft_parse(t_btree **ast, t_list **token); -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_separator(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_less(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_great(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_dless(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_dgreat(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_lessand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_greatand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_word(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_subshell(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_while(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_do(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_done(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); -int parse_list(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst); +int get_instruction(t_btree **ast, t_list **start, t_list **lst); + +int parse_newline(t_btree **ast, t_list **start, t_list **lst); +int parse_separator(t_btree **ast, t_list **start, t_list **lst); +int parse_less(t_btree **ast, t_list **start, t_list **lst); +int parse_great(t_btree **ast, t_list **start, t_list **lst); +int parse_dless(t_btree **ast, t_list **start, t_list **lst); +int parse_dgreat(t_btree **ast, t_list **start, t_list **lst); +int parse_lessand(t_btree **ast, t_list **start, t_list **lst); +int parse_greatand(t_btree **ast, t_list **start, t_list **lst); +int parse_word(t_btree **ast, t_list **start, t_list **lst); +int parse_subshell(t_btree **ast, t_list **start, t_list **lst); +int parse_newline(t_btree **ast, t_list **start, t_list **lst); +int parse_while(t_btree **ast, t_list **start, t_list **lst); +int parse_do(t_btree **ast, t_list **start, t_list **lst); +int parse_done(t_btree **ast, t_list **start, t_list **lst); +int parse_list(t_btree **ast, t_list **start, t_list **lst); #endif diff --git a/42sh/sample/test.sh b/42sh/sample/test.sh new file mode 100644 index 00000000..ad942dcb --- /dev/null +++ b/42sh/sample/test.sh @@ -0,0 +1,6 @@ +test=10 +while [ $test -gt 1 ] +do + echo hello + ((test--)) +done > file1 > file2 diff --git a/42sh/sample/test2.sh b/42sh/sample/test2.sh new file mode 100644 index 00000000..ecbddfc1 --- /dev/null +++ b/42sh/sample/test2.sh @@ -0,0 +1 @@ +ewf wefwe wf diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index bb41f8ed..5b4bdabd 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -1,11 +1,20 @@ -echo "begin loop" while [ 1 ] do - echo "begin inner loop" - while [ 1 ] + while pwd do - echo "end scd loop" + while pwd + do + while pwd + do + echo "hello" + done + done done - echo "end inner loop" -done -echo "end loop" + while pwd + do + while pwd + do + echo "bonjour" + done + done +done diff --git a/42sh/src/exec/exec_while.c b/42sh/src/exec/exec_while.c index 40ce2599..7b4e8f5e 100644 --- a/42sh/src/exec/exec_while.c +++ b/42sh/src/exec/exec_while.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 17:33:53 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:30:05 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:58:02 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ int exec_while(t_btree **ast) node = ((*ast)->right)->item; DG("consequent command data '%s'", node->data.str); - consequent_commands = shell_get_ast(node->data.str); + consequent_commands = NULL; test = 10; diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 8d4939b5..f10f97ca 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:36:56 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:40:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command) ret = 1; else if (ft_tokenize(alst, *command, DEFAULT)) ret = 1; -// else if (ft_post_tokenize(alst, command)) -// ret = 1; + else if (ft_post_tokenize(alst, command)) + ret = 1; ft_strdel(command); return (ret); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index 8d7b1056..9727cf02 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:47:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:54:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,8 +17,7 @@ int ft_post_tokenize(t_list **alst, char **str) int ret; t_flag tk; - -// get_reserverd_words(alst, str); + get_reserved_words(alst); while ((ret = reduce_parens(alst, *str))) if (ret == -1) { diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 8f12b94f..ae862e23 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:47:30 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:40:50 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_lexer_state.c b/42sh/src/lexer/get_lexer_state.c index 3fceeeb0..7bc728f2 100644 --- a/42sh/src/lexer/get_lexer_state.c +++ b/42sh/src/lexer/get_lexer_state.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/10 13:45:46 by jhalford #+# #+# */ -/* Updated: 2017/01/27 12:49:24 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:20 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index bd679000..d6f6ea6d 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 00:07:05 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:31:41 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:39:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,29 +14,37 @@ int get_reserved_words(t_list **alst) { -// t_token token; + t_token *token; + t_list *temp; + int i; - (void)alst; -/* - while (*alst) + temp = *alst; + i = 0; + while (temp) { - token = (*alst)->content; - if (token->type = TK_WORD); + token = temp->content; + if (i == 0) + if (token->type == TK_N_WORD) + if (ft_strncmp(token->data, "while", 5) == 0) + token->type = TK_WHILE; + if ((token->type & (TK_NEWLINE | TK_AMP | TK_SEMI))) { - if (ft_strncmp(str, "while", 5) == 0 && ft_isalpha(*(str + 5)) == 0) - lexer_while( - else if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (DONE); - else if (ft_strncmp(str, "do" , 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (DO); -// else if (ft_strncmp(str, "if", 2) == 0 && ft_isalpha(*(str + 2)) == 0) -// return (IF); -// else if (ft_strncmp(str, "then", 4) == 0 && ft_isalpha(*(str + 4)) == 0) -// return (THEN); -// else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) -// return (FI); + if ((temp = temp->next)) + token = temp->content; + else + break; + if (token->type == TK_N_WORD) + { + if (ft_strncmp(token->data, "while", 5) == 0) + token->type = TK_WHILE; + else if (ft_strncmp(token->data, "done", 4) == 0) + token->type = TK_DONE; + else if (ft_strncmp(token->data, "do" , 2) == 0) + token->type = TK_DO; + } } - (*alst) = (*alst)->next; + temp = temp->next; + i++; } -*/ return (0); + return (0); } diff --git a/42sh/src/lexer/lexer_default.c b/42sh/src/lexer/lexer_default.c index 886f6d96..dbc44be1 100644 --- a/42sh/src/lexer/lexer_default.c +++ b/42sh/src/lexer/lexer_default.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 18:36:21 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:39:45 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:49 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_delim.c b/42sh/src/lexer/lexer_delim.c index c7e260d6..f068458f 100644 --- a/42sh/src/lexer/lexer_delim.c +++ b/42sh/src/lexer/lexer_delim.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:58:44 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:48:41 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:11 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_do.c b/42sh/src/lexer/lexer_do.c deleted file mode 100644 index 60d401ff..00000000 --- a/42sh/src/lexer/lexer_do.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_do.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 23:29:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:32:45 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_do(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - t_nest *nest; - - nest = &data_singleton()->nest; - if (*alst) - { - nest->do_group++; - if (nest->do_group == 1) - return (lexer_do(&(*alst)->next, str)); - return (ft_tokenize(alst, str, LIST)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_DO; - state = LIST; - return (ft_tokenize(&(*alst)->next, str + 2, state)); -} diff --git a/42sh/src/lexer/lexer_done.c b/42sh/src/lexer/lexer_done.c deleted file mode 100644 index 6af42378..00000000 --- a/42sh/src/lexer/lexer_done.c +++ /dev/null @@ -1,38 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_done.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/31 20:49:09 by ariard #+# #+# */ -/* Updated: 2017/01/31 23:33:03 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_done(t_list **alst, char *str) -{ - t_token *token; - t_lexstate state; - t_nest *nest; - - nest = &data_singleton()->nest; - if (*alst) - { - nest->do_group--; - if (nest->do_group == 0) - return (lexer_done(&(*alst)->next, str)); - return (ft_tokenize(alst, str, LIST)); - } - else - { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); - } - token = (*alst)->content; - token->type = TK_DONE; - state = DEFAULT; - return (ft_tokenize(&(*alst)->next, str + 4, state)); -} diff --git a/42sh/src/lexer/lexer_list.c b/42sh/src/lexer/lexer_list.c deleted file mode 100644 index 78edf1eb..00000000 --- a/42sh/src/lexer/lexer_list.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_list.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/26 00:55:33 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:12:49 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "lexer.h" - -int lexer_list(t_list **alst, char *str) -{ - t_token *token; - - token = (*alst)->content; - token->type = TK_LIST; - while (*str) - { - if (ft_is_delim_list(*str)) - { - token_append(token, *str++, 0); - while (ft_is_delim(*str) || *str == '\n') - str++; - if (ft_strncmp(str, "done", 4) == 0 && ft_isalpha(*(str + 4)) == 0) - return (ft_tokenize(alst, str, DONE)); - else if (ft_strncmp(str, "do", 2) == 0 && (ft_is_delim_list(*(str + 2)) - || *(str + 2) == ' ')) - return (ft_tokenize(alst, str, DO)); - else if (ft_strncmp(str, "then", 4) == 0 && (ft_is_delim_list(*(str + 4)) - || *(str + 4) == ' ')) - return (ft_tokenize(alst, str, THEN)); - else if (ft_strncmp(str, "fi", 2) == 0 && ft_isalpha(*(str + 2)) == 0) - return (ft_tokenize(alst, str, FI)); - } - token_append(token, *str++, 0); - } - return (0); -} diff --git a/42sh/src/lexer/lexer_newline.c b/42sh/src/lexer/lexer_newline.c index dc3b830f..c18ac827 100644 --- a/42sh/src/lexer/lexer_newline.c +++ b/42sh/src/lexer/lexer_newline.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/23 23:19:46 by ariard #+# #+# */ -/* Updated: 2017/01/27 12:51:12 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_sep.c b/42sh/src/lexer/lexer_sep.c index 7c686546..fd1e1341 100644 --- a/42sh/src/lexer/lexer_sep.c +++ b/42sh/src/lexer/lexer_sep.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 16:29:57 by jhalford #+# #+# */ -/* Updated: 2017/02/02 16:30:03 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:53:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_word.c b/42sh/src/lexer/lexer_word.c index 265ad499..08ca6489 100644 --- a/42sh/src/lexer/lexer_word.c +++ b/42sh/src/lexer/lexer_word.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:07:11 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:40:21 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:52:48 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/ft_putast.c b/42sh/src/main/ft_putast.c index 3394bb3e..e17643eb 100644 --- a/42sh/src/main/ft_putast.c +++ b/42sh/src/main/ft_putast.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:18:04 by jhalford #+# #+# */ -/* Updated: 2017/01/30 17:21:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:35:03 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,8 @@ char *ft_putast(void *nodein) return (" COM "); else if (node->type == TK_WHILE) return (" WHILE "); + else if (node->type == TK_NEWLINE) + return ("NEW"); else if (node->type == TK_LIST) return (" LIST "); else if (node->type == TK_GREAT) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index bb4682cd..0f363b1f 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 15:40:10 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:33:52 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/read_script.c b/42sh/src/main/read_script.c index 04f03a1a..a8f05050 100644 --- a/42sh/src/main/read_script.c +++ b/42sh/src/main/read_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/21 22:49:31 by ariard #+# #+# */ -/* Updated: 2017/01/30 20:32:24 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:55:38 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,13 +20,14 @@ static int rs_loop(char *file, t_script *script) line = NULL; if ((fd = open(file, O_RDONLY)) == -1) return (0); - while (get_next_line(fd, &line) > 0) + while ((get_next_line(fd, &line)) > 0) { ft_strappend(&script->buffer, line); ft_strappend(&script->buffer, "\n"); ft_strdel(&line); script->size += ft_strlen(script->buffer); } + script->buffer[ft_strlen(script->buffer) - 1] = 0; close(fd); if (script->size > 0) { diff --git a/42sh/src/main/shell_get_ast.c b/42sh/src/main/shell_get_ast.c deleted file mode 100644 index 36809962..00000000 --- a/42sh/src/main/shell_get_ast.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* shell_set_ast.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ariard +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/30 18:19:13 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:29:43 by ariard ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -t_list **shell_get_ast(char *command) -{ - t_list *token; - t_btree *ast; - t_list **list_ast; - - token = NULL; - ast = NULL; - list_ast = ft_memalloc(sizeof(*list_ast)); - if (ft_tokenize(&token, command, DEFAULT)) - return (NULL); - if (!token) - return (NULL); - if (ft_post_tokenize(&token, &command)) - return (NULL); - DG("after post_tokenize"); - token_print(token); - if (ft_parse(list_ast, &ast, &token)) - return (NULL); - return (list_ast); -} diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 6667c5de..caef3e8b 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/22 23:06:34 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:37:58 by ariard ### ########.fr */ +/* Updated: 2017/02/03 18:16:01 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,9 +16,7 @@ int shell_script() { t_list *token; t_btree *ast; - t_btree **ast2; t_list *list_ast; - t_list *tmp2; token = NULL; ast = NULL; @@ -27,23 +25,14 @@ int shell_script() return (1); DG("after post_tokenize"); token_print(token); - if (ft_parse(&list_ast, &ast, &token)) - return (1); - tmp2 = list_ast; - while (tmp2) - { - ast2 = tmp2->content; - btree_print(STDBUG, *ast2, &ft_putast); - tmp2 = tmp2->next; - } -/* while (list_ast) - { - if (ft_exec((t_btree **)list_ast->content)) - return (1); - list_ast = list_ast->next; - } -*/ - loop_exec(list_ast); + while (token) + { + if (ft_parse(&ast, &token)) + return (1); + btree_print(STDBUG, ast, &ft_putast); + // if (ft_exec(&ast)) + // return (1); + } return (0); } diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index e1d4ed8b..93430d33 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/30 17:14:58 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:31:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:37:05 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ t_parser g_parser[] = { - {TK_NEWLINE, &parse_newline}, + {TK_NEWLINE | TK_WHILE, &get_instruction}, {TK_SEMI, &parse_separator}, {TK_AND_IF | TK_OR_IF, &parse_separator}, {TK_AMP, &parse_separator}, @@ -27,14 +27,11 @@ t_parser g_parser[] = {TK_GREATAND, &parse_greatand}, {TK_SUBSHELL, &parse_subshell}, {TK_WHILE, &parse_while}, - {TK_DO, &parse_do}, - {TK_DONE, &parse_done}, - {TK_LIST, &parse_list}, {TK_WORD, &parse_word}, {0, 0}, }; -int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) +int ft_parse(t_btree **ast, t_list **start) { t_list *lst; t_astnode item; @@ -48,14 +45,12 @@ int ft_parse(t_list **list_ast, t_btree **ast, t_list **start) *ast = btree_create_node(&item, sizeof(item)); ((t_astnode *)(*ast)->item)->data.token = NULL; } - if (!*list_ast) - *list_ast = ft_lstnew(ast, sizeof(t_btree *)); while (g_parser[i].type) { if ((lst = ft_lst_find(*start, &g_parser[i].type, &token_cmp_type))) { if (g_parser[i].f) - (*g_parser[i].f)(list_ast, ast, start, &lst); + (*g_parser[i].f)(ast, start, &lst); return (0); } i++; diff --git a/42sh/src/lexer/lexer_while.c b/42sh/src/parser/get_instruction.c similarity index 58% rename from 42sh/src/lexer/lexer_while.c rename to 42sh/src/parser/get_instruction.c index 46a24567..02f44d6a 100644 --- a/42sh/src/lexer/lexer_while.c +++ b/42sh/src/parser/get_instruction.c @@ -1,28 +1,25 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* lexer_loop.c :+: :+: :+: */ +/* get_instruction.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ -/* Created: 2017/01/25 21:58:12 by ariard #+# #+# */ -/* Updated: 2017/02/03 15:14:06 by ariard ### ########.fr */ +/* Created: 2017/02/03 16:56:55 by ariard #+# #+# */ +/* Updated: 2017/02/03 17:16:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ -#include "lexer.h" +#include "parser.h" -int lexer_while(t_list **alst, char *str) +int get_instruction(t_btree **ast, t_list **start, t_list **lst) { t_token *token; - token = (*alst)->content; - if (ft_strncmp(str, "while", 5) == 0) - token->type = TK_WHILE; - else if (ft_isalnum(*str)) - { - token_append(token, *str, 0); - return (ft_tokenize(alst, str + 1, WORD)); - } - return (ft_tokenize(&(*alst)->next, str + 6, LIST)); + token = (*lst)->content; + if (token->type == TK_NEWLINE) + return (parse_newline(ast, start, lst)); + else if (token->type == TK_WHILE) + return (parse_while(ast, start, lst)); + return (0); } diff --git a/42sh/src/parser/parse_dgreat.c b/42sh/src/parser/parse_dgreat.c index 2091d89e..885ac93a 100644 --- a/42sh/src/parser/parse_dgreat.c +++ b/42sh/src/parser/parse_dgreat.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:56:38 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:35:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dgreat(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_dgreat(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_dgreat(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_dless.c b/42sh/src/parser/parse_dless.c index 7e8b39ce..d9526c69 100644 --- a/42sh/src/parser/parse_dless.c +++ b/42sh/src/parser/parse_dless.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 13:31:40 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:53:00 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:43:10 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_dless(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_dless(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -30,6 +29,6 @@ int parse_dless(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_do.c b/42sh/src/parser/parse_do.c index c66e47c2..e4d8ba80 100644 --- a/42sh/src/parser/parse_do.c +++ b/42sh/src/parser/parse_do.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:28:41 by ariard #+# #+# */ -/* Updated: 2017/01/30 17:15:40 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:46:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_do(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_do(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -22,6 +21,6 @@ int parse_do(t_list **list_ast, t_btree **ast, node = (*ast)->item; node->type = TK_DO; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); + ft_parse(ast, start); return (0); } diff --git a/42sh/src/parser/parse_done.c b/42sh/src/parser/parse_done.c index 3e4ef836..93301b12 100644 --- a/42sh/src/parser/parse_done.c +++ b/42sh/src/parser/parse_done.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:36:28 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:44:47 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:47:12 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_done(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_done(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -22,6 +21,6 @@ int parse_done(t_list **list_ast, t_btree **ast, node = (*ast)->item; node->type = TK_DONE; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); + ft_parse(ast, start); return (0); } diff --git a/42sh/src/parser/parse_great.c b/42sh/src/parser/parse_great.c index 23f0ea15..6369f303 100644 --- a/42sh/src/parser/parse_great.c +++ b/42sh/src/parser/parse_great.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:51:06 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:42:45 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_great(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_great(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_great(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_greatand.c b/42sh/src/parser/parse_greatand.c index b4125436..6dbbb7d8 100644 --- a/42sh/src/parser/parse_greatand.c +++ b/42sh/src/parser/parse_greatand.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 20:39:51 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:44:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_greatand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_greatand(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -27,6 +26,6 @@ int parse_greatand(t_list **list_ast, t_btree **ast, node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_less.c b/42sh/src/parser/parse_less.c index fa935218..5faf5020 100644 --- a/42sh/src/parser/parse_less.c +++ b/42sh/src/parser/parse_less.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:49:18 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:39:34 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_less(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_less(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -31,6 +30,6 @@ int parse_less(t_list **list_ast, t_btree **ast, node->data.redir.word.word = ft_strdup(next_tok->data); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); ft_lst_delif(start, (*lst)->next->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_lessand.c b/42sh/src/parser/parse_lessand.c index 5e1e0311..e180d418 100644 --- a/42sh/src/parser/parse_lessand.c +++ b/42sh/src/parser/parse_lessand.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/01/26 19:55:51 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:44:09 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_lessand(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_lessand(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *tok; @@ -27,6 +26,6 @@ int parse_lessand(t_list **list_ast, t_btree **ast, node->data.redir.close = tok->data[ft_strlen(tok->data) - 1] == '-' ? 1 : 0; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_list.c b/42sh/src/parser/parse_list.c index 965fed17..2acf1c61 100644 --- a/42sh/src/parser/parse_list.c +++ b/42sh/src/parser/parse_list.c @@ -6,19 +6,17 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:34:21 by ariard #+# #+# */ -/* Updated: 2017/01/31 20:20:13 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:51:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_list(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_list(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; - (void)list_ast; token = (*lst)->content; node = (*ast)->item; node->type = TK_LIST; diff --git a/42sh/src/parser/parse_newline.c b/42sh/src/parser/parse_newline.c index cf636e26..e7386b9d 100644 --- a/42sh/src/parser/parse_newline.c +++ b/42sh/src/parser/parse_newline.c @@ -6,14 +6,13 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/26 19:26:41 by ariard #+# #+# */ -/* Updated: 2017/01/31 19:35:54 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:16:47 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_newline(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_newline(t_btree **ast, t_list **start, t_list **lst) { t_list *temp; t_astnode *node; @@ -25,8 +24,7 @@ int parse_newline(t_list **list_ast, t_btree **ast, temp = (*lst)->next; (*lst)->next = NULL; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, ast, start); - *ast = NULL; - ft_parse(&(*list_ast)->next, ast, &temp); + ft_parse(ast, start); + *start = temp; return (0); } diff --git a/42sh/src/parser/parse_separator.c b/42sh/src/parser/parse_separator.c index cf7c911b..8a9ea9de 100644 --- a/42sh/src/parser/parse_separator.c +++ b/42sh/src/parser/parse_separator.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 16:21:51 by jhalford #+# #+# */ -/* Updated: 2017/01/30 20:25:22 by ariard ### ########.fr */ +/* Updated: 2017/02/03 17:29:32 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_separator(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_separator(t_btree **ast, t_list **start, t_list **lst) { t_token *token; t_astnode *node; @@ -21,8 +20,8 @@ int parse_separator(t_list **list_ast, t_btree **ast, token = (*lst)->content; node = (*ast)->item; node->type = token->type; - ft_parse(list_ast, &(*ast)->right, &(*lst)->next); + ft_parse(&(*ast)->right, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); + ft_parse(&(*ast)->left, start); return (0); } diff --git a/42sh/src/parser/parse_subshell.c b/42sh/src/parser/parse_subshell.c index 8d19414e..a6255173 100644 --- a/42sh/src/parser/parse_subshell.c +++ b/42sh/src/parser/parse_subshell.c @@ -6,14 +6,13 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/11 16:52:44 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:30:42 by ariard ### ########.fr */ +/* Updated: 2017/02/03 16:45:35 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_subshell(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_subshell(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; @@ -27,7 +26,7 @@ int parse_subshell(t_list **list_ast, t_btree **ast, node->data.sstr[1] = ft_strdup("-c"); node->data.sstr[2] = ft_strdup(token->data); node->data.sstr[3] = NULL; - ft_parse(list_ast, ast, &(*lst)->next); + ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); } diff --git a/42sh/src/parser/parse_while.c b/42sh/src/parser/parse_while.c index f8b01c55..1fdc14f4 100644 --- a/42sh/src/parser/parse_while.c +++ b/42sh/src/parser/parse_while.c @@ -6,23 +6,52 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/01/30 16:03:28 by ariard #+# #+# */ -/* Updated: 2017/02/02 16:30:35 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:48:36 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_while(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_while(t_btree **ast, t_list **start, t_list **lst) { + t_list *temp; t_astnode *node; t_token *token; + int nest; token = (*lst)->content; node = (*ast)->item; node->type = TK_WHILE; ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); - ft_parse(list_ast, &(*ast)->left, start); - ft_parse(list_ast, &(*ast)->right, start); - return (0); + while (((*lst) = (*lst)->next)) + if ((token = (*lst)->content)->type & TK_DO) + break; + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(&(*ast)->left, start); + + (*lst) = temp; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + temp = temp->next; + (*lst) = temp; + *start = temp; + nest = 1; + while (((*lst) = (*lst)->next)) + { + token = (*lst)->content; + if (token->type & TK_DO) + nest++; + else if (token->type & TK_DONE) + nest--; + if (nest == 0) + break; + DG("nest : '%d'", nest); + } + temp = (*lst)->next; + (*lst)->next = NULL; + ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); + ft_parse(&(*ast)->right, start); + *start = temp; + return (0); } diff --git a/42sh/src/parser/parse_word.c b/42sh/src/parser/parse_word.c index 951678d0..e265a6a0 100644 --- a/42sh/src/parser/parse_word.c +++ b/42sh/src/parser/parse_word.c @@ -6,21 +6,18 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 12:49:45 by jhalford #+# #+# */ -/* Updated: 2017/02/03 14:52:09 by ariard ### ########.fr */ +/* Updated: 2017/02/03 19:37:29 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser.h" -int parse_word(t_list **list_ast, t_btree **ast, - t_list **start, t_list **lst) +int parse_word(t_btree **ast, t_list **start, t_list **lst) { t_astnode *node; t_token *token; char **my_tab; - (void)list_ast; - (void)start; my_tab = NULL; token = (*lst)->content; node = (*ast)->item; @@ -28,7 +25,7 @@ int parse_word(t_list **list_ast, t_btree **ast, my_tab = ft_sstradd(my_tab, token->data); my_tab = ft_sstradd(my_tab, (char *)token->esc); ft_ld_pushback(&node->data.token, my_tab); -// ft_parse(ast, &(*lst)->next); + ft_parse(ast, &(*lst)->next); ft_lst_delif(start, (*lst)->content, &ft_addrcmp, &token_free); return (0); }