until ok
This commit is contained in:
parent
597afe06d0
commit
cdfc6c6d55
13 changed files with 74 additions and 19 deletions
|
|
@ -2,8 +2,7 @@ if ls
|
||||||
then
|
then
|
||||||
if ls
|
if ls
|
||||||
then
|
then
|
||||||
pwd
|
ls | cat
|
||||||
else pwd
|
pwd ; ls
|
||||||
fi
|
fi
|
||||||
else ls
|
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
11
42sh/sample/until/01_until.sh
Normal file
11
42sh/sample/until/01_until.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
until ls
|
||||||
|
do
|
||||||
|
until ls
|
||||||
|
do
|
||||||
|
pwd | cat
|
||||||
|
done
|
||||||
|
until ls
|
||||||
|
do
|
||||||
|
pwd ; ls
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/01/26 00:07:05 by ariard #+# #+# */
|
/* Created: 2017/01/26 00:07:05 by ariard #+# #+# */
|
||||||
/* Updated: 2017/02/17 17:30:54 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:54:01 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -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/02/20 18:08:21 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:19:04 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 18:17:26 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:18:56 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/17 22:17:14 by ariard #+# #+# */
|
/* Created: 2017/02/17 22:17:14 by ariard #+# #+# */
|
||||||
/* Updated: 2017/02/20 17:46:39 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:58:28 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -24,12 +24,12 @@ int isloop(t_btree **ast)
|
||||||
if ((node->type == TK_NEWLINE || node->type == TK_SEMI
|
if ((node->type == TK_NEWLINE || node->type == TK_SEMI
|
||||||
|| node->type == TK_AMP) && isloop(&(*ast)->right) == 1)
|
|| node->type == TK_AMP) && isloop(&(*ast)->right) == 1)
|
||||||
return (1);
|
return (1);
|
||||||
if (node->type == TK_WHILE && node->full == 1)
|
if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 1)
|
||||||
{
|
{
|
||||||
DG("DON ENTER");
|
DG("DON ENTER");
|
||||||
return (2);
|
return (2);
|
||||||
}
|
}
|
||||||
if (node->type == TK_WHILE && node->full == 0)
|
if ((node->type == TK_WHILE || node->type == TK_UNTIL) && node->full == 0)
|
||||||
{
|
{
|
||||||
DG(" NOFULL");
|
DG(" NOFULL");
|
||||||
return (1);
|
return (1);
|
||||||
|
|
@ -46,18 +46,20 @@ int add_loop_cmd(t_btree **ast, t_list **lst)
|
||||||
token = (*lst)->content;
|
token = (*lst)->content;
|
||||||
node = (*ast)->item;
|
node = (*ast)->item;
|
||||||
DG("add loop cmd");
|
DG("add loop cmd");
|
||||||
if (token->type == TK_WHILE && node->type == TK_WHILE)
|
if ((token->type == TK_WHILE || token->type == TK_UNTIL)
|
||||||
|
&& (node->type == TK_WHILE || node->type == TK_UNTIL))
|
||||||
{
|
{
|
||||||
DG("nest one more");
|
DG("nest one more");
|
||||||
node->nest++;
|
node->nest++;
|
||||||
}
|
}
|
||||||
if (token->type == TK_DONE && node->type == TK_WHILE && node->nest > 0)
|
if (token->type == TK_DONE && (node->type == TK_WHILE || node->type == TK_UNTIL)
|
||||||
|
&& node->nest > 0)
|
||||||
{
|
{
|
||||||
node->nest--;
|
node->nest--;
|
||||||
DG("nest one less");
|
DG("nest one less");
|
||||||
}
|
}
|
||||||
else if (token->type == TK_DONE && node->type == TK_WHILE
|
else if (token->type == TK_DONE && (node->type == TK_WHILE
|
||||||
&& node->nest == 0)
|
|| node->type == TK_UNTIL) && node->nest == 0)
|
||||||
{
|
{
|
||||||
DG("WHILE FULL");
|
DG("WHILE FULL");
|
||||||
return ((node->full = 1));
|
return ((node->full = 1));
|
||||||
|
|
|
||||||
|
|
@ -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/02/20 18:03:21 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:50:20 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -62,6 +62,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{NEWLINE_LIST, TK_ELIF, TK_ELIF, TK_ELIF},
|
{NEWLINE_LIST, TK_ELIF, TK_ELIF, TK_ELIF},
|
||||||
{NEWLINE_LIST, TK_ELSE, TK_ELSE, TK_ELSE},
|
{NEWLINE_LIST, TK_ELSE, TK_ELSE, TK_ELSE},
|
||||||
{NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE},
|
{NEWLINE_LIST, TK_WHILE, TK_WHILE, TK_WHILE},
|
||||||
|
{NEWLINE_LIST, TK_UNTIL, TK_UNTIL, TK_UNTIL},
|
||||||
{NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE},
|
{NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE},
|
||||||
{NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0},
|
{NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0},
|
||||||
{NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0},
|
{NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0},
|
||||||
|
|
@ -114,6 +115,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0},
|
{CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0},
|
{CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0},
|
||||||
|
{CMD_NAME, TK_UNTIL, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_DO, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_DO, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_IF, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_IF, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_ELIF, CMD_SUPERIOR, 0},
|
||||||
|
|
@ -162,6 +164,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE},
|
{COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE},
|
||||||
{COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, COMPOUND_LIST, PIPE_SEMI_SEQUENCE, 0},
|
||||||
{COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0},
|
||||||
|
{COMMAND, TK_UNTIL, PIPE_SEMI_SEQUENCE, 0},
|
||||||
{COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, TK_DO, PIPE_SEMI_SEQUENCE, 0},
|
||||||
{COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, TK_IF, PIPE_SEMI_SEQUENCE, 0},
|
||||||
{COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, TK_THEN, PIPE_SEMI_SEQUENCE, 0},
|
||||||
|
|
@ -175,6 +178,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0},
|
{COMMAND, COMPLETE_CONDITION, PIPE_SEMI_SEQUENCE, 0},
|
||||||
{END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
|
{END_COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
|
||||||
{END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_WHILE, PIPE_SEQUENCE, 0},
|
||||||
|
{END_COMMAND, TK_UNTIL, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0},
|
{END_COMMAND, LINEBREAK, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, TK_DO, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_DO, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, TK_IF, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_IF, PIPE_SEQUENCE, 0},
|
||||||
|
|
@ -184,6 +188,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0},
|
{END_COMMAND, COMPLETE_CONDITION, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
{END_COMMAND, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
||||||
{PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0},
|
{PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0},
|
||||||
|
{PIPE_SEQUENCE, TK_UNTIL, PIPELINE, 0},
|
||||||
{PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG},
|
{PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG},
|
||||||
{PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0},
|
{PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0},
|
||||||
{PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0},
|
{PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0},
|
||||||
|
|
@ -197,6 +202,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0},
|
{PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0},
|
||||||
{PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0},
|
{PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0},
|
||||||
{PIPELINE, TK_WHILE, AND_OR, 0},
|
{PIPELINE, TK_WHILE, AND_OR, 0},
|
||||||
|
{PIPELINE, TK_UNTIL, AND_OR, 0},
|
||||||
{PIPELINE, TK_DO, AND_OR, 0},
|
{PIPELINE, TK_DO, AND_OR, 0},
|
||||||
{PIPELINE, TK_IF, AND_OR, 0},
|
{PIPELINE, TK_IF, AND_OR, 0},
|
||||||
{PIPELINE, TK_ELIF, AND_OR, 0},
|
{PIPELINE, TK_ELIF, AND_OR, 0},
|
||||||
|
|
@ -211,6 +217,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR},
|
{AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR},
|
||||||
{AND_OR, TK_DO, COMPOUND_LIST, 0},
|
{AND_OR, TK_DO, COMPOUND_LIST, 0},
|
||||||
{AND_OR, TK_WHILE, COMPOUND_LIST, 0},
|
{AND_OR, TK_WHILE, COMPOUND_LIST, 0},
|
||||||
|
{AND_OR, TK_UNTIL, COMPOUND_LIST, 0},
|
||||||
{AND_OR, TK_IF, COMPOUND_LIST, 0},
|
{AND_OR, TK_IF, COMPOUND_LIST, 0},
|
||||||
{AND_OR, TK_ELIF, COMPOUND_LIST, 0},
|
{AND_OR, TK_ELIF, COMPOUND_LIST, 0},
|
||||||
{AND_OR, TK_THEN, COMPOUND_LIST, 0},
|
{AND_OR, TK_THEN, COMPOUND_LIST, 0},
|
||||||
|
|
|
||||||
|
|
@ -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 17:46:48 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:53:00 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -22,6 +22,7 @@ t_treematch g_treematch[] =
|
||||||
{TK_OR_IF, &add_sep},
|
{TK_OR_IF, &add_sep},
|
||||||
{TK_AND_IF, &add_sep},
|
{TK_AND_IF, &add_sep},
|
||||||
{TK_WHILE, &add_cmd},
|
{TK_WHILE, &add_cmd},
|
||||||
|
{TK_UNTIL, &add_cmd},
|
||||||
{TK_DO, &add_cmd},
|
{TK_DO, &add_cmd},
|
||||||
{TK_DONE, &add_cmd},
|
{TK_DONE, &add_cmd},
|
||||||
{TK_IF, &add_cmd},
|
{TK_IF, &add_cmd},
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 16:26:30 by ariard #+# #+# */
|
/* Created: 2017/02/09 16:26:30 by ariard #+# #+# */
|
||||||
/* Updated: 2017/02/20 18:03:18 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:50:14 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -171,6 +171,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{TK_IF, NEWLINE_LIST},
|
{TK_IF, NEWLINE_LIST},
|
||||||
{TK_IF, PIPE_SEMI_SEQUENCE},
|
{TK_IF, PIPE_SEMI_SEQUENCE},
|
||||||
{TK_IF, TK_WHILE},
|
{TK_IF, TK_WHILE},
|
||||||
|
{TK_IF, TK_UNTIL},
|
||||||
{TK_IF, TK_IF},
|
{TK_IF, TK_IF},
|
||||||
{TK_IF, TK_DO},
|
{TK_IF, TK_DO},
|
||||||
{TK_IF, TK_ELIF},
|
{TK_IF, TK_ELIF},
|
||||||
|
|
@ -222,6 +223,12 @@ t_stackmatch g_stackmatch[] =
|
||||||
{TK_UNTIL, SEPARATOR_OP},
|
{TK_UNTIL, SEPARATOR_OP},
|
||||||
{TK_UNTIL, NEWLINE_LIST},
|
{TK_UNTIL, NEWLINE_LIST},
|
||||||
{TK_UNTIL, PIPE_SEMI_SEQUENCE},
|
{TK_UNTIL, PIPE_SEMI_SEQUENCE},
|
||||||
|
{TK_UNTIL, TK_DO},
|
||||||
|
{TK_UNTIL, TK_WHILE},
|
||||||
|
{TK_UNTIL, COMPOUND_LIST},
|
||||||
|
{TK_UNTIL, TK_IF},
|
||||||
|
{TK_UNTIL, TK_ELIF},
|
||||||
|
{TK_UNTIL, TK_THEN},
|
||||||
{TK_FOR, LINEBREAK},
|
{TK_FOR, LINEBREAK},
|
||||||
{TK_FOR, TK_BANG},
|
{TK_FOR, TK_BANG},
|
||||||
{TK_FOR, SEPARATOR_OP},
|
{TK_FOR, SEPARATOR_OP},
|
||||||
|
|
@ -263,6 +270,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{SEQUENTIAL_SEP, WORDLIST},
|
{SEQUENTIAL_SEP, WORDLIST},
|
||||||
{END_COMMAND, PIPE_SEMI_SEQUENCE},
|
{END_COMMAND, PIPE_SEMI_SEQUENCE},
|
||||||
{END_COMMAND, TK_WHILE},
|
{END_COMMAND, TK_WHILE},
|
||||||
|
{END_COMMAND, TK_UNTIL},
|
||||||
{END_COMMAND, TK_DO},
|
{END_COMMAND, TK_DO},
|
||||||
{END_COMMAND, TK_IF},
|
{END_COMMAND, TK_IF},
|
||||||
{END_COMMAND, TK_THEN},
|
{END_COMMAND, TK_THEN},
|
||||||
|
|
@ -296,6 +304,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{LINEBREAK, PROGRAM},
|
{LINEBREAK, PROGRAM},
|
||||||
{NEWLINE_LIST, TK_DO},
|
{NEWLINE_LIST, TK_DO},
|
||||||
{NEWLINE_LIST, TK_WHILE},
|
{NEWLINE_LIST, TK_WHILE},
|
||||||
|
{NEWLINE_LIST, TK_UNTIL},
|
||||||
{NEWLINE_LIST, TK_IF},
|
{NEWLINE_LIST, TK_IF},
|
||||||
{NEWLINE_LIST, TK_ELIF},
|
{NEWLINE_LIST, TK_ELIF},
|
||||||
{NEWLINE_LIST, TK_THEN},
|
{NEWLINE_LIST, TK_THEN},
|
||||||
|
|
@ -371,6 +380,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{CMD_NAME, PIPE_SEMI_SEQUENCE},
|
{CMD_NAME, PIPE_SEMI_SEQUENCE},
|
||||||
{CMD_NAME, AND_OR_MAJOR},
|
{CMD_NAME, AND_OR_MAJOR},
|
||||||
{CMD_NAME, TK_WHILE},
|
{CMD_NAME, TK_WHILE},
|
||||||
|
{CMD_NAME, TK_UNTIL},
|
||||||
{CMD_NAME, TK_DO},
|
{CMD_NAME, TK_DO},
|
||||||
{CMD_NAME, TK_IF},
|
{CMD_NAME, TK_IF},
|
||||||
{CMD_NAME, TK_ELIF},
|
{CMD_NAME, TK_ELIF},
|
||||||
|
|
@ -380,6 +390,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{CMD_NAME, COMPLETE_CONDITION},
|
{CMD_NAME, COMPLETE_CONDITION},
|
||||||
|
|
||||||
{CMD_SUPERIOR, TK_WHILE},
|
{CMD_SUPERIOR, TK_WHILE},
|
||||||
|
{CMD_SUPERIOR, TK_UNTIL},
|
||||||
{CMD_SUPERIOR, TK_DO},
|
{CMD_SUPERIOR, TK_DO},
|
||||||
{CMD_SUPERIOR, TK_IF},
|
{CMD_SUPERIOR, TK_IF},
|
||||||
{CMD_SUPERIOR, TK_ELIF},
|
{CMD_SUPERIOR, TK_ELIF},
|
||||||
|
|
@ -396,6 +407,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{CMD_SUPERIOR, AND_OR_MAJOR},
|
{CMD_SUPERIOR, AND_OR_MAJOR},
|
||||||
|
|
||||||
{SIMPLE_COMMAND, TK_WHILE},
|
{SIMPLE_COMMAND, TK_WHILE},
|
||||||
|
{SIMPLE_COMMAND, TK_UNTIL},
|
||||||
{SIMPLE_COMMAND, TK_DO},
|
{SIMPLE_COMMAND, TK_DO},
|
||||||
{SIMPLE_COMMAND, TK_IF},
|
{SIMPLE_COMMAND, TK_IF},
|
||||||
{SIMPLE_COMMAND, TK_ELIF},
|
{SIMPLE_COMMAND, TK_ELIF},
|
||||||
|
|
@ -441,6 +453,15 @@ t_stackmatch g_stackmatch[] =
|
||||||
{UNTIL_CLAUSE, SEPARATOR_OP},
|
{UNTIL_CLAUSE, SEPARATOR_OP},
|
||||||
{UNTIL_CLAUSE, NEWLINE_LIST},
|
{UNTIL_CLAUSE, NEWLINE_LIST},
|
||||||
{UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE},
|
{UNTIL_CLAUSE, PIPE_SEMI_SEQUENCE},
|
||||||
|
{UNTIL_CLAUSE, TK_DO},
|
||||||
|
{UNTIL_CLAUSE, TK_WHILE},
|
||||||
|
{UNTIL_CLAUSE, TK_UNTIL},
|
||||||
|
{UNTIL_CLAUSE, TK_IF},
|
||||||
|
{UNTIL_CLAUSE, TK_ELIF},
|
||||||
|
{UNTIL_CLAUSE, TK_THEN},
|
||||||
|
{UNTIL_CLAUSE, TK_ELSE},
|
||||||
|
{UNTIL_CLAUSE, COMPOUND_LIST},
|
||||||
|
{UNTIL_CLAUSE, COMPLETE_CONDITION},
|
||||||
{WHILE_CLAUSE, LINEBREAK},
|
{WHILE_CLAUSE, LINEBREAK},
|
||||||
{WHILE_CLAUSE, TK_BANG},
|
{WHILE_CLAUSE, TK_BANG},
|
||||||
{WHILE_CLAUSE, SEPARATOR_OP},
|
{WHILE_CLAUSE, SEPARATOR_OP},
|
||||||
|
|
@ -448,6 +469,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{WHILE_CLAUSE, PIPE_SEMI_SEQUENCE},
|
{WHILE_CLAUSE, PIPE_SEMI_SEQUENCE},
|
||||||
{WHILE_CLAUSE, TK_DO},
|
{WHILE_CLAUSE, TK_DO},
|
||||||
{WHILE_CLAUSE, TK_WHILE},
|
{WHILE_CLAUSE, TK_WHILE},
|
||||||
|
{WHILE_CLAUSE, TK_UNTIL},
|
||||||
{WHILE_CLAUSE, TK_IF},
|
{WHILE_CLAUSE, TK_IF},
|
||||||
{WHILE_CLAUSE, TK_ELIF},
|
{WHILE_CLAUSE, TK_ELIF},
|
||||||
{WHILE_CLAUSE, TK_THEN},
|
{WHILE_CLAUSE, TK_THEN},
|
||||||
|
|
@ -463,6 +485,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{IF_CLAUSE, PIPE_SEMI_SEQUENCE},
|
{IF_CLAUSE, PIPE_SEMI_SEQUENCE},
|
||||||
{IF_CLAUSE, TK_DO},
|
{IF_CLAUSE, TK_DO},
|
||||||
{IF_CLAUSE, TK_WHILE},
|
{IF_CLAUSE, TK_WHILE},
|
||||||
|
{IF_CLAUSE, TK_UNTIL},
|
||||||
{IF_CLAUSE, TK_IF},
|
{IF_CLAUSE, TK_IF},
|
||||||
{IF_CLAUSE, TK_ELIF},
|
{IF_CLAUSE, TK_ELIF},
|
||||||
{IF_CLAUSE, TK_THEN},
|
{IF_CLAUSE, TK_THEN},
|
||||||
|
|
@ -518,6 +541,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMPOUND_COMMAND, FUNC},
|
{COMPOUND_COMMAND, FUNC},
|
||||||
{COMPOUND_COMMAND, TK_DO},
|
{COMPOUND_COMMAND, TK_DO},
|
||||||
{COMPOUND_COMMAND, TK_WHILE},
|
{COMPOUND_COMMAND, TK_WHILE},
|
||||||
|
{COMPOUND_COMMAND, TK_UNTIL},
|
||||||
{COMPOUND_COMMAND, TK_IF},
|
{COMPOUND_COMMAND, TK_IF},
|
||||||
{COMPOUND_COMMAND, TK_ELIF},
|
{COMPOUND_COMMAND, TK_ELIF},
|
||||||
{COMPOUND_COMMAND, TK_THEN},
|
{COMPOUND_COMMAND, TK_THEN},
|
||||||
|
|
@ -525,6 +549,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMPOUND_COMMAND, COMPOUND_LIST},
|
{COMPOUND_COMMAND, COMPOUND_LIST},
|
||||||
{COMPOUND_COMMAND, COMPLETE_CONDITION},
|
{COMPOUND_COMMAND, COMPLETE_CONDITION},
|
||||||
{COMMAND, TK_WHILE},
|
{COMMAND, TK_WHILE},
|
||||||
|
{COMMAND, TK_UNTIL},
|
||||||
{COMMAND, LINEBREAK},
|
{COMMAND, LINEBREAK},
|
||||||
{COMMAND, TK_DO},
|
{COMMAND, TK_DO},
|
||||||
{COMMAND, TK_IF},
|
{COMMAND, TK_IF},
|
||||||
|
|
@ -542,6 +567,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{AND_OR_MINOR, LINEBREAK},
|
{AND_OR_MINOR, LINEBREAK},
|
||||||
{AND_OR_MINOR, AND_OR_MAJOR},
|
{AND_OR_MINOR, AND_OR_MAJOR},
|
||||||
{PIPE_SEQUENCE, TK_WHILE},
|
{PIPE_SEQUENCE, TK_WHILE},
|
||||||
|
{PIPE_SEQUENCE, TK_UNTIL},
|
||||||
{PIPE_SEQUENCE, TK_DO},
|
{PIPE_SEQUENCE, TK_DO},
|
||||||
{PIPE_SEQUENCE, TK_IF},
|
{PIPE_SEQUENCE, TK_IF},
|
||||||
{PIPE_SEQUENCE, TK_ELIF},
|
{PIPE_SEQUENCE, TK_ELIF},
|
||||||
|
|
@ -555,6 +581,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{PIPE_SEQUENCE, NEWLINE_LIST},
|
{PIPE_SEQUENCE, NEWLINE_LIST},
|
||||||
{PIPE_SEQUENCE, AND_OR_MAJOR},
|
{PIPE_SEQUENCE, AND_OR_MAJOR},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_WHILE},
|
{PIPE_SEMI_SEQUENCE, TK_WHILE},
|
||||||
|
{PIPE_SEMI_SEQUENCE, TK_UNTIL},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_DO},
|
{PIPE_SEMI_SEQUENCE, TK_DO},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_IF},
|
{PIPE_SEMI_SEQUENCE, TK_IF},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_ELIF},
|
{PIPE_SEMI_SEQUENCE, TK_ELIF},
|
||||||
|
|
@ -568,6 +595,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{PIPE_SEMI_SEQUENCE, NEWLINE_LIST},
|
{PIPE_SEMI_SEQUENCE, NEWLINE_LIST},
|
||||||
{PIPE_SEMI_SEQUENCE, AND_OR_MAJOR},
|
{PIPE_SEMI_SEQUENCE, AND_OR_MAJOR},
|
||||||
{PIPELINE, TK_WHILE},
|
{PIPELINE, TK_WHILE},
|
||||||
|
{PIPELINE, TK_UNTIL},
|
||||||
{PIPELINE, TK_DO},
|
{PIPELINE, TK_DO},
|
||||||
{PIPELINE, TK_IF},
|
{PIPELINE, TK_IF},
|
||||||
{PIPELINE, TK_ELIF},
|
{PIPELINE, TK_ELIF},
|
||||||
|
|
@ -583,6 +611,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{AND_OR_MAJOR, AND_OR_MAJOR},
|
{AND_OR_MAJOR, AND_OR_MAJOR},
|
||||||
{AND_OR, TK_DO},
|
{AND_OR, TK_DO},
|
||||||
{AND_OR, TK_WHILE},
|
{AND_OR, TK_WHILE},
|
||||||
|
{AND_OR, TK_UNTIL},
|
||||||
{AND_OR, TK_IF},
|
{AND_OR, TK_IF},
|
||||||
{AND_OR, TK_ELIF},
|
{AND_OR, TK_ELIF},
|
||||||
{AND_OR, TK_THEN},
|
{AND_OR, TK_THEN},
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 14:30:22 by ariard #+# #+# */
|
/* Created: 2017/02/09 14:30:22 by ariard #+# #+# */
|
||||||
/* Updated: 2017/02/20 18:16:44 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:57:14 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2017/02/09 17:58:34 by ariard #+# #+# */
|
/* Created: 2017/02/09 17:58:34 by ariard #+# #+# */
|
||||||
/* Updated: 2017/02/20 18:01:02 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:50:16 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -31,6 +31,7 @@ t_prodmatch g_prodmatch[] =
|
||||||
{TK_N_WORD, AND_OR, CMD_NAME},
|
{TK_N_WORD, AND_OR, CMD_NAME},
|
||||||
{TK_N_WORD, AND_OR_MAJOR, CMD_NAME},
|
{TK_N_WORD, AND_OR_MAJOR, CMD_NAME},
|
||||||
{TK_N_WORD, TK_WHILE, CMD_NAME},
|
{TK_N_WORD, TK_WHILE, CMD_NAME},
|
||||||
|
{TK_N_WORD, TK_UNTIL, CMD_NAME},
|
||||||
{TK_N_WORD, TK_DO, CMD_NAME},
|
{TK_N_WORD, TK_DO, CMD_NAME},
|
||||||
{TK_N_WORD, TK_IF, CMD_NAME},
|
{TK_N_WORD, TK_IF, CMD_NAME},
|
||||||
{TK_N_WORD, TK_THEN, CMD_NAME},
|
{TK_N_WORD, TK_THEN, CMD_NAME},
|
||||||
|
|
@ -56,6 +57,7 @@ t_prodmatch g_prodmatch[] =
|
||||||
{TK_NAME, TK_FOR, NAME},
|
{TK_NAME, TK_FOR, NAME},
|
||||||
{TK_NEWLINE, TK_DO, NEWLINE_LIST},
|
{TK_NEWLINE, TK_DO, NEWLINE_LIST},
|
||||||
{TK_NEWLINE, TK_WHILE, NEWLINE_LIST},
|
{TK_NEWLINE, TK_WHILE, NEWLINE_LIST},
|
||||||
|
{TK_NEWLINE, TK_UNTIL, NEWLINE_LIST},
|
||||||
{TK_NEWLINE, TK_IF, NEWLINE_LIST},
|
{TK_NEWLINE, TK_IF, NEWLINE_LIST},
|
||||||
{TK_NEWLINE, TK_FI, NEWLINE_LIST},
|
{TK_NEWLINE, TK_FI, NEWLINE_LIST},
|
||||||
{TK_NEWLINE, TK_ELIF, NEWLINE_LIST},
|
{TK_NEWLINE, TK_ELIF, NEWLINE_LIST},
|
||||||
|
|
|
||||||
|
|
@ -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/02/20 18:03:26 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 18:50:22 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -14,6 +14,10 @@
|
||||||
|
|
||||||
char *read_state(t_sym current)
|
char *read_state(t_sym current)
|
||||||
{
|
{
|
||||||
|
if (current == UNTIL_CLAUSE)
|
||||||
|
return ("UNTIL_CLAUSE");
|
||||||
|
if (current == TK_UNTIL)
|
||||||
|
return ("TK_UNTIL");
|
||||||
if (current == IF_CLAUSE)
|
if (current == IF_CLAUSE)
|
||||||
return ("IF_CLAUSE");
|
return ("IF_CLAUSE");
|
||||||
if (current == CONDITION)
|
if (current == CONDITION)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue