else ok nesting coming

This commit is contained in:
ariard@student.42.fr 2017-02-20 17:25:53 +01:00
parent 2e012b3e91
commit d9375e853a
2 changed files with 12 additions and 8 deletions

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/19 18:12:52 by ariard #+# #+# */ /* Created: 2017/02/19 18:12:52 by ariard #+# #+# */
/* Updated: 2017/02/20 17:17:34 by ariard ### ########.fr */ /* Updated: 2017/02/20 17:23:25 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -23,9 +23,10 @@ int iscondition(t_btree **ast, t_list **lst)
{ {
node = (*ast)->item; node = (*ast)->item;
if ((node->type == TK_IF || iscondition(&(*ast)->right, lst)) if ((node->type == TK_IF || iscondition(&(*ast)->right, lst))
&& token->type == TK_ELIF && node->full == 0) && (token->type == TK_ELIF || token->type == TK_ELSE)
&& node->full == 0)
return (2); return (2);
if ((node->type == TK_IF || node->type == TK_ELIF) if ((node->type == TK_IF || node->type == TK_ELIF || node->type == TK_ELSE)
&& node->full == 0) && node->full == 0)
return (1); return (1);
if ((node->type == TK_NEWLINE || node->type == TK_SEMI if ((node->type == TK_NEWLINE || node->type == TK_SEMI
@ -42,12 +43,14 @@ int add_condition_cmd(t_btree **ast, t_list **lst)
token = (*lst)->content; token = (*lst)->content;
node = (*ast)->item; node = (*ast)->item;
if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF)) if (token->type == TK_IF && (node->type == TK_IF || node->type == TK_ELIF
|| node->type == TK_ELSE))
node->nest++; node->nest++;
if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF) if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF
&& node->nest > 0) || node->type == TK_ELSE) && node->nest > 0)
node->nest--; node->nest--;
else if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF)) else if (token->type == TK_FI && (node->type == TK_IF || node->type == TK_ELIF
|| node->type == TK_ELSE))
return ((node->full = 1)); return ((node->full = 1));
if (token->type == TK_THEN) if (token->type == TK_THEN)
return (add_cmd(&(*ast)->right, lst)); return (add_cmd(&(*ast)->right, lst));

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/02/20 16:53:55 by ariard ### ########.fr */ /* Updated: 2017/02/20 17:23:48 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -26,6 +26,7 @@ t_treematch g_treematch[] =
{TK_DONE, &add_cmd}, {TK_DONE, &add_cmd},
{TK_IF, &add_cmd}, {TK_IF, &add_cmd},
{TK_ELIF, &add_cmd}, {TK_ELIF, &add_cmd},
{TK_ELSE, &add_cmd},
{TK_THEN, &add_cmd}, {TK_THEN, &add_cmd},
{TK_FI, &add_cmd}, {TK_FI, &add_cmd},
{TK_NEWLINE, &add_sep}, {TK_NEWLINE, &add_sep},