From 722a290aee2a5ee0b93ccbadd53f8ce2dd6a3935 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Wed, 1 Mar 2017 23:01:43 +0100 Subject: [PATCH] yale sauf subshell --- 42sh/F | 0 42sh/includes/parser.h | 2 +- 42sh/includes/types.h | 2 +- 42sh/src/main/main.c | 6 ++++-- 42sh/src/parser/add_cmd.c | 6 +++--- 42sh/src/parser/add_redir.c | 9 ++++++++- 42sh/src/parser/aggregate_sym.c | 2 +- 42sh/src/parser/build_tree.c | 3 ++- 42sh/src/parser/parser_init.c | 2 +- 42sh/src/parser/read_stack.c | 10 +++++----- 10 files changed, 26 insertions(+), 16 deletions(-) delete mode 100644 42sh/F diff --git a/42sh/F b/42sh/F deleted file mode 100644 index e69de29b..00000000 diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 93e4eb83..7001687d 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/03/01 18:02:01 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:00 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/includes/types.h b/42sh/includes/types.h index b5d64f79..3445dc7b 100644 --- a/42sh/includes/types.h +++ b/42sh/includes/types.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ -/* Updated: 2017/03/01 16:55:33 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:16 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index a9cbbd1a..1050a47c 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/03/01 17:50:59 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:59:40 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,8 +30,10 @@ int handle_instruction(int fd) DG("START: state=%i", parser.state); while (1) { - if ((ret = readline(fd, get_lexer_stack(lexer) || parser.state == UNDEFINED, &str))) + if ((ret = readline(fd, get_lexer_stack(lexer) || + parser.state == UNDEFINED, &str))) { + ft_putstr("bonjour"); if (ret == -1) return (-1); return (parser.state == UNDEFINED ? error_EOF() : 1); diff --git a/42sh/src/parser/add_cmd.c b/42sh/src/parser/add_cmd.c index 5ba1159d..3faa94a2 100644 --- a/42sh/src/parser/add_cmd.c +++ b/42sh/src/parser/add_cmd.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 20:49:15 by ariard #+# #+# */ -/* Updated: 2017/03/01 18:02:27 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:46:31 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,12 +20,12 @@ int add_cmd(t_btree **ast, t_list **lst) if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN) return (0); + else if (isdir_sep(ast, lst)) + return (add_redir_type(ast, lst)); else if (!*ast) gen_node(ast); else if (isdir_word(ast, lst)) return (add_redir_word(ast, lst)); - else if (isdir_sep(ast, lst)) - return (add_redir_type(ast, lst)); else if (isloop(ast, lst) == 3) return (add_loop_condition(ast, lst)); else if (isloop(ast, lst)) diff --git a/42sh/src/parser/add_redir.c b/42sh/src/parser/add_redir.c index 41c1eec6..ae36029c 100644 --- a/42sh/src/parser/add_redir.c +++ b/42sh/src/parser/add_redir.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/17 16:39:05 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:59:17 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:44:53 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,6 +27,13 @@ int isdir_sep(t_btree **ast, t_list **list) || token->type == TK_DLESS || token->type == TK_DGREAT)) return (1); } + if (!*ast) + { + if (token->type == TK_LESS || token->type == TK_GREAT + || token->type == TK_GREATAND || token->type == TK_LESSAND + || token->type == TK_DLESS || token->type == TK_DGREAT) + return (1); + } return (0); } diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 0ddc11af..07bcf532 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:39:18 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:00:05 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:55:14 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 5b584160..f1360913 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/15 18:32:59 by ariard #+# #+# */ -/* Updated: 2017/03/01 18:01:38 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:39:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ t_treematch g_treematch[] = {TK_DLESS, &add_cmd}, {TK_OR_IF, &add_sep}, {TK_AND_IF, &add_sep}, + {TK_AMP, &add_sep}, {TK_WHILE, &add_cmd}, {TK_UNTIL, &add_cmd}, {TK_DO, &add_cmd}, diff --git a/42sh/src/parser/parser_init.c b/42sh/src/parser/parser_init.c index f9e87aec..3e78e937 100644 --- a/42sh/src/parser/parser_init.c +++ b/42sh/src/parser/parser_init.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/21 16:14:04 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:43:08 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:54:37 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 9910a4fc..8373fc1f 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 15:32:10 by ariard #+# #+# */ -/* Updated: 2017/03/01 17:17:20 by ariard ### ########.fr */ +/* Updated: 2017/03/01 22:53:39 by ariard ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,8 +14,10 @@ char *read_state(t_sym current) { - if (current == UNDEFINED) - return ("UNDEFINED"); + if (current == LINEBREAK) + return ("LINEBREAK"); + if (current == CLOSE_LIST) + return ("CLOSE_LIST"); if (current == BRACE_CLAUSE) return ("BRACE_CLAUSE"); if (current == FUNC_NAME) @@ -192,8 +194,6 @@ char *read_state(t_sym current) return ("ALL"); if (current == NEWLINE_LIST) return ("NEWLINE_LIST"); - if (current == LINEBREAK) - return ("LINEBREAK"); if (current != 0) return ("NON-DEFINED"); if (current == 0)