This commit is contained in:
gwojda 2017-03-29 16:24:55 +02:00
commit 7147c5956f
5 changed files with 2929 additions and 14 deletions

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,4 @@
echo "echo hello" >> sample/again.sh echo "echo hello" >> sample/again.sh
echo hello echo hello
echo hello echo hello
echo hello

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/11 15:58:38 by ariard #+# #+# */ /* Created: 2017/03/11 15:58:38 by ariard #+# #+# */
/* Updated: 2017/03/29 15:19:50 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:19:14 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -347,6 +347,7 @@ static t_aggrematch g_aggrematch[] =
{AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0}, {AND_OR, CASE_LIST_NS, CASE_LIST_NS, 0},
{AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0}, {AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0},
{AND_OR, CONDITION, COMPOUND_LIST, 0}, {AND_OR, CONDITION, COMPOUND_LIST, 0},
{AND_OR, COMPLETE_CONDITION, COMPOUND_LIST, 0},
{AND_OR, SEPARATOR_OP, LIST, LIST}, {AND_OR, SEPARATOR_OP, LIST, LIST},
{AND_OR, NEWLINE_LIST, LIST, 0}, {AND_OR, NEWLINE_LIST, LIST, 0},
{AND_OR, LINEBREAK, LIST, 0}, {AND_OR, LINEBREAK, LIST, 0},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/11 16:11:21 by ariard #+# #+# */ /* Created: 2017/03/11 16:11:21 by ariard #+# #+# */
/* Updated: 2017/03/29 15:52:29 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:19:59 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -1249,6 +1249,7 @@ static t_stackmatch g_stackmatch[] =
{AND_OR, TK_WHILE}, {AND_OR, TK_WHILE},
{AND_OR, TK_UNTIL}, {AND_OR, TK_UNTIL},
{AND_OR, TK_IF}, {AND_OR, TK_IF},
{AND_OR, TK_THEN},
{AND_OR, TK_ELIF}, {AND_OR, TK_ELIF},
{AND_OR, TK_ELSE}, {AND_OR, TK_ELSE},
{AND_OR, CMD_SUPERIOR}, {AND_OR, CMD_SUPERIOR},
@ -1257,6 +1258,7 @@ static t_stackmatch g_stackmatch[] =
{AND_OR, PIPE_CLOSE_SEQUENCE}, {AND_OR, PIPE_CLOSE_SEQUENCE},
{AND_OR, CASE_LIST_NS}, {AND_OR, CASE_LIST_NS},
{AND_OR, CONDITION}, {AND_OR, CONDITION},
{AND_OR, COMPLETE_CONDITION},
{AND_OR, LINEBREAK}, {AND_OR, LINEBREAK},
{AND_OR, TK_BANG}, {AND_OR, TK_BANG},
{AND_OR, TK_PAREN_OPEN}, {AND_OR, TK_PAREN_OPEN},
@ -1283,6 +1285,7 @@ int eval_sym(t_list **stack, t_sym new_sym)
return (1); return (1);
head = (*stack)->content; head = (*stack)->content;
i = 0; i = 0;
DG("eval %s && %s", read_state(*head), read_state(new_sym));
while (g_stackmatch[i].top) while (g_stackmatch[i].top)
{ {
if (new_sym == g_stackmatch[i].top && *head == g_stackmatch[i].under) if (new_sym == g_stackmatch[i].top && *head == g_stackmatch[i].under)

View file

@ -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/03/29 14:31:14 by ariard ### ########.fr */ /* Updated: 2017/03/29 16:20:29 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -129,6 +129,8 @@ static t_prodmatch g_prodmatch[] =
{TK_AMP, PIPE_CLOSE_SEQUENCE, SEPARATOR_OP}, {TK_AMP, PIPE_CLOSE_SEQUENCE, SEPARATOR_OP},
{TK_AND_IF, ALL, AND_OR}, {TK_AND_IF, ALL, AND_OR},
{TK_OR_IF, ALL, AND_OR}, {TK_OR_IF, ALL, AND_OR},
{TK_AND_IF, COMPLETE_CONDITION, OTHER},
{TK_OR_IF, COMPLETE_CONDITION, OTHER},
{0, 0, 0}, {0, 0, 0},
}; };
@ -144,6 +146,7 @@ int produce_sym(t_list **stack, t_sym *new_sym, t_list **lst)
head = (*stack)->content; head = (*stack)->content;
i = 0; i = 0;
*new_sym = 0; *new_sym = 0;
DG();
while (g_prodmatch[i].new_sym) while (g_prodmatch[i].new_sym)
{ {
if (token->type == g_prodmatch[i].token if (token->type == g_prodmatch[i].token