yale sauf subshell

This commit is contained in:
ariard@student.42.fr 2017-03-01 23:01:43 +01:00
parent aa9097575d
commit 722a290aee
10 changed files with 26 additions and 16 deletions

0
42sh/F
View file

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/01 12:15:54 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 */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 17:11:48 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 */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/06 18:40:58 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); DG("START: state=%i", parser.state);
while (1) 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) if (ret == -1)
return (-1); return (-1);
return (parser.state == UNDEFINED ? error_EOF() : 1); return (parser.state == UNDEFINED ? error_EOF() : 1);

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/15 20:49:15 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) if ((token = (*lst)->content)->type == TK_IN || token->type == TK_PAREN_OPEN)
return (0); return (0);
else if (isdir_sep(ast, lst))
return (add_redir_type(ast, lst));
else if (!*ast) else if (!*ast)
gen_node(ast); gen_node(ast);
else if (isdir_word(ast, lst)) else if (isdir_word(ast, lst))
return (add_redir_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) else if (isloop(ast, lst) == 3)
return (add_loop_condition(ast, lst)); return (add_loop_condition(ast, lst));
else if (isloop(ast, lst)) else if (isloop(ast, lst))

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/17 16:39:05 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)) || token->type == TK_DLESS || token->type == TK_DGREAT))
return (1); 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); return (0);
} }

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 17:39:18 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 */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/15 18:32:59 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_DLESS, &add_cmd},
{TK_OR_IF, &add_sep}, {TK_OR_IF, &add_sep},
{TK_AND_IF, &add_sep}, {TK_AND_IF, &add_sep},
{TK_AMP, &add_sep},
{TK_WHILE, &add_cmd}, {TK_WHILE, &add_cmd},
{TK_UNTIL, &add_cmd}, {TK_UNTIL, &add_cmd},
{TK_DO, &add_cmd}, {TK_DO, &add_cmd},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/21 16:14:04 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 */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 15:32:10 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) char *read_state(t_sym current)
{ {
if (current == UNDEFINED) if (current == LINEBREAK)
return ("UNDEFINED"); return ("LINEBREAK");
if (current == CLOSE_LIST)
return ("CLOSE_LIST");
if (current == BRACE_CLAUSE) if (current == BRACE_CLAUSE)
return ("BRACE_CLAUSE"); return ("BRACE_CLAUSE");
if (current == FUNC_NAME) if (current == FUNC_NAME)
@ -192,8 +194,6 @@ char *read_state(t_sym current)
return ("ALL"); return ("ALL");
if (current == NEWLINE_LIST) if (current == NEWLINE_LIST)
return ("NEWLINE_LIST"); return ("NEWLINE_LIST");
if (current == LINEBREAK)
return ("LINEBREAK");
if (current != 0) if (current != 0)
return ("NON-DEFINED"); return ("NON-DEFINED");
if (current == 0) if (current == 0)