while error check doing

This commit is contained in:
ariard@student.42.fr 2017-02-17 19:49:12 +01:00
parent 21e98d1364
commit 4ef7af6e20
21 changed files with 121 additions and 90 deletions

Binary file not shown.

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/01 12:15:54 by jhalford #+# #+# */
/* Updated: 2017/02/17 17:11:45 by ariard ### ########.fr */
/* Updated: 2017/02/17 18:49:28 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -1,28 +1 @@
while ls
do
while ls
do
while ls
do
while ls
do
while ls
do
while ls
do
echo hello
done
done
done
done
done
ls
while ls
do
while ls
do
echo world
done
done
pwd
done
ls | cat | cat | cat | cat | cat

View file

@ -1 +1 @@
< file1 ls | cat | cat | ls > file2

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/02 15:30:59 by jhalford #+# #+# */
/* Updated: 2017/02/10 01:24:32 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:28:32 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -21,8 +21,8 @@ int ft_lexer(t_list **alst, char **command)
ret = 1;
else if (ft_tokenize(alst, *command, DEFAULT))
ret = 1;
// else if (ft_post_tokenize(alst, command))
// ret = 1;
else if (ft_post_tokenize(alst, command))
ret = 1;
ft_strdel(command);
return (ret);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/11 16:11:11 by jhalford #+# #+# */
/* Updated: 2017/02/04 15:54:27 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:28:15 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -14,12 +14,13 @@
int ft_post_tokenize(t_list **alst, char **str)
{
int ret;
t_flag tk;
// int ret;
// t_flag tk;
(void)str;
// token_print(*alst);
get_reserved_words(alst);
while ((ret = reduce_parens(alst, *str)))
/* while ((ret = reduce_parens(alst, *str)))
if (ret == -1)
{
ft_dprintf(2, "{red}%s: parse error near '('{eoc}\n", SHELL_NAME);
@ -38,5 +39,5 @@ int ft_post_tokenize(t_list **alst, char **str)
return (-1);
}
DG("new command from bquotes: '%s'", *str);
return (0);
*/ return (0);
}

View file

@ -6,7 +6,7 @@
/* By: jhalford <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/10 13:37:11 by jhalford #+# #+# */
/* Updated: 2017/02/09 21:55:06 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:28:23 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/26 00:07:05 by ariard #+# #+# */
/* Updated: 2017/02/10 01:13:35 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:30:54 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -21,7 +21,7 @@ int get_reserved_words(t_list **alst)
temp = *alst;
previous_token = NULL;
while (temp)
{
{
token = temp->content;
if (!previous_token || (previous_token->type & RW_SEP))
{

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/01/22 23:06:34 by ariard #+# #+# */
/* Updated: 2017/02/15 20:58:03 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:22:03 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

Binary file not shown.

Binary file not shown.

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/15 20:49:15 by ariard #+# #+# */
/* Updated: 2017/02/17 16:52:22 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:46:18 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/17 16:39:05 by ariard #+# #+# */
/* Updated: 2017/02/17 17:14:52 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:19:35 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 17:39:18 by ariard #+# #+# */
/* Updated: 2017/02/17 17:05:00 by ariard ### ########.fr */
/* Updated: 2017/02/17 19:48:12 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -19,9 +19,10 @@ t_aggrematch g_aggrematch[] =
{TK_WORD, WORDLIST, WORDLIST, 0},
{TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0},
{TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
{TK_FI, ELSE_PART, IF_CLAUSE, IF},
{TK_FI, COMPOUND_LIST, IF_CLAUSE, IF},
{TK_DONE, COMPOUND_LIST, DO_GROUP, DO},
{TK_FI, ELSE_PART, IF_CLAUSE, TK_IF},
{TK_FI, COMPOUND_LIST, IF_CLAUSE, TK_IF},
{TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO},
{TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO},
//Esac ?
{TK_ESAC, CASE_LIST, CASE_CLAUSE, TK_CASE},
{TK_ESAC, CASE_LIST_NS, CASE_CLAUSE, TK_CASE},
@ -31,7 +32,10 @@ t_aggrematch g_aggrematch[] =
{TK_AND_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR},
{TK_OR_IF, CMD_SUPERIOR, AND_OR_MINOR, CMD_SUPERIOR},
//watch this
{SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, 0},
{SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0},
{SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0},
{SEPARATOR, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
{SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
{LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP},
{LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI},
@ -45,6 +49,9 @@ t_aggrematch g_aggrematch[] =
{LINEBREAK, COMPLETE_COMMANDS, PROGRAM, LINEBREAK},
{LINEBREAK, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
{LINEBREAK, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
{LINEBREAK, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
{NEWLINE_LIST, CMD_NAME, CMD_SUPERIOR, CMD_NAME},
{NEWLINE_LIST, TK_DO, TK_DO, TK_DO},
{NEWLINE_LIST, NEWLINE_LIST, NEWLINE_LIST, NEWLINE},
{NEWLINE_LIST, NAME, SEQUENTIAL_SEP, 0},
{NEWLINE_LIST, IN, SEQUENTIAL_SEP, 0},
@ -94,18 +101,20 @@ t_aggrematch g_aggrematch[] =
{CMD_NAME, TK_BANG, CMD_SUPERIOR, 0},
{CMD_NAME, SEPARATOR_OP, CMD_SUPERIOR, 0},
{CMD_NAME, NEWLINE_LIST, CMD_SUPERIOR, 0},
{CMD_NAME, TK_WHILE, CMD_SUPERIOR, 0},
{CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0},
{CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0},
{CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0},
{SIMPLE_COMMAND, ALL, COMMAND, 0},
{DO_GROUP, NAME, FOR_CLAUSE, TK_FOR},
{DO_GROUP, SEQUENTIAL_SEP, FOR_CLAUSE, TK_FOR},
{DO_GROUP, CMD_SUPERIOR, LOOP, CMD_SUPERIOR},
{DO_GROUP, COMPOUND_LIST, LOOP, COMPOUND_LIST},
{LOOP, WHILE, WHILE_CLAUSE, WHILE},
{LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL},
{BRACE_GROUP, ALL, COMPOUND_COMMAND, 0},
{FUNCTION_BODY, FUNC, FUNCTION_DEFINITION, 0},
{FUNCTION_DEFINITION, ALL, COMMAND, 0},
{LOOP, TK_WHILE, WHILE_CLAUSE, TK_WHILE},
{LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL},
{UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0},
{WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
{ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF},
@ -126,22 +135,26 @@ t_aggrematch g_aggrematch[] =
{AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE},
{AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0},
{AND_OR_MINOR, AND_OR_MAJOR, AND_OR_MAJOR, 0},
{COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
{COMMAND, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE, PIPE_SEMI_SEQUENCE},
{COMMAND, TK_WHILE, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, TK_BANG, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, SEPARATOR_OP, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, NEWLINE_LIST, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, LINEBREAK, PIPE_SEMI_SEQUENCE, 0},
{COMMAND, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE, 0},
{PIPE_SEQUENCE, TK_WHILE, PIPELINE, 0},
{PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG},
{PIPE_SEQUENCE, SEPARATOR_OP, PIPELINE, 0},
{PIPE_SEQUENCE, NEWLINE_LIST, PIPELINE, 0},
{PIPE_SEQUENCE, LINEBREAK, PIPELINE, 0},
{PIPE_SEQUENCE, AND_OR_MAJOR, PIPELINE, 0},
{PIPELINE, TK_WHILE, AND_OR, 0},
{PIPELINE, LINEBREAK, AND_OR, 0},
// {PIPELINE, LINEBREAK, AND_OR, AND_OR},
{PIPELINE, SEPARATOR_OP, AND_OR, 0},
{PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR},
{AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR, AND_OR_MAJOR},
{AND_OR, TK_WHILE, COMPOUND_LIST, 0},
{AND_OR, SEPARATOR_OP, LIST, LIST},
{AND_OR, NEWLINE_LIST, LIST, 0},
{AND_OR, LINEBREAK, LIST, 0},
@ -159,20 +172,20 @@ int aggregate_sym(t_sym **stack, t_sym *new_sym, t_parstate *state)
int i;
i = 0;
// DG("aggregate head %s && sym %s",
// read_state(**stack), read_state(*new_sym));
DG("aggregate head %s && sym %s",
read_state(**stack), read_state(*new_sym));
while (g_aggrematch[i].top)
{
if (*new_sym == g_aggrematch[i].top
&& MATCH_STACK(**stack, g_aggrematch[i].under))
{
// DG("MATCH : %s", read_state(g_aggrematch[i].new_sym));
DG("MATCH : %s", read_state(g_aggrematch[i].new_sym));
*new_sym = g_aggrematch[i].new_sym;
if (g_aggrematch[i].erase_sym)
{
pop_stack(stack, g_aggrematch[i].erase_sym);
// DG("stack after pop: %s", read_state(**stack));
DG("stack after pop: %s", read_state(**stack));
}
if (eval_sym(**stack, *new_sym))
return ((*state = ERROR));

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/15 18:32:59 by ariard #+# #+# */
/* Updated: 2017/02/17 16:39:38 by ariard ### ########.fr */
/* Updated: 2017/02/17 18:48:56 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -36,8 +36,8 @@ int build_tree(t_btree **ast, t_list **lst)
if (g_treematch[i].type == token->type)
{
DG("func TK : '%s' TK : '%s'",
read_state(g_treematch[i].type) ,read_state(token->type));
// DG("func TK : '%s' TK : '%s'",
// read_state(g_treematch[i].type) ,read_state(token->type));
return (g_treematch[i].add(ast, lst));
}
i++;

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 16:26:30 by ariard #+# #+# */
/* Updated: 2017/02/17 17:05:11 by ariard ### ########.fr */
/* Updated: 2017/02/17 19:43:28 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -175,9 +175,11 @@ t_stackmatch g_stackmatch[] =
{TK_ELIF, COMPOUND_LIST},
{TK_FI, ELSE_PART},
{TK_FI, COMPOUND_LIST},
{TK_DO, CMD_SUPERIOR},
{TK_DO, COMPOUND_LIST},
{TK_DO, NAME},
{TK_DO, SEQUENTIAL_SEP},
{TK_DONE, CMD_SUPERIOR},
{TK_DONE, COMPOUND_LIST},
{TK_CASE, LINEBREAK},
{TK_CASE, TK_BANG},
@ -236,8 +238,10 @@ t_stackmatch g_stackmatch[] =
{SEQUENTIAL_SEP, NAME},
{SEQUENTIAL_SEP, IN},
{SEQUENTIAL_SEP, WORDLIST},
{SEPARATOR, CMD_SUPERIOR},
{SEPARATOR, TERM},
{SEPARATOR, COMPOUND_LIST},
{SEPARATOR_OP, CMD_SUPERIOR},
{SEPARATOR_OP, LIST},
{SEPARATOR_OP, TERM},
{SEPARATOR_OP, COMPOUND_LIST},
@ -253,6 +257,9 @@ t_stackmatch g_stackmatch[] =
{LINEBREAK, COMPLETE_COMMANDS},
{LINEBREAK, CMD_SUPERIOR},
{LINEBREAK, PIPE_SEMI_SEQUENCE},
{LINEBREAK, COMPOUND_LIST},
{NEWLINE_LIST, TK_DO},
{NEWLINE_LIST, CMD_NAME},
{NEWLINE_LIST, NEWLINE_LIST},
{NEWLINE_LIST, NAME},
{NEWLINE_LIST, IN},
@ -319,7 +326,11 @@ t_stackmatch g_stackmatch[] =
{CMD_NAME, NEWLINE_LIST},
{CMD_NAME, PIPE_SEMI_SEQUENCE},
{CMD_NAME, AND_OR_MAJOR},
{CMD_NAME, TK_WHILE},
{CMD_NAME, TK_DO},
{CMD_SUPERIOR, TK_WHILE},
{CMD_SUPERIOR, TK_DO},
{CMD_SUPERIOR, LINEBREAK,},
{CMD_SUPERIOR, TK_BANG},
{CMD_SUPERIOR, SEPARATOR_OP},
@ -328,12 +339,14 @@ t_stackmatch g_stackmatch[] =
{CMD_SUPERIOR, PIPE_SEMI_SEQUENCE},
{CMD_SUPERIOR, AND_OR_MAJOR},
{SIMPLE_COMMAND, TK_WHILE},
{SIMPLE_COMMAND, LINEBREAK},
{SIMPLE_COMMAND, TK_BANG},
{SIMPLE_COMMAND, SEPARATOR_OP},
{SIMPLE_COMMAND, NEWLINE_LIST},
{SIMPLE_COMMAND, PIPE_SEMI_SEQUENCE},
{SIMPLE_COMMAND, AND_OR_MAJOR},
{DO_GROUP, CMD_SUPERIOR},
{DO_GROUP, COMPOUND_LIST},
{DO_GROUP, NAME},
{DO_GROUP, SEQUENTIAL_SEP},
@ -412,6 +425,7 @@ t_stackmatch g_stackmatch[] =
{COMPOUND_COMMAND, NEWLINE_LIST},
{COMPOUND_COMMAND, PIPE_SEMI_SEQUENCE},
{COMPOUND_COMMAND, FUNC},
{COMMAND, TK_WHILE},
{COMMAND, LINEBREAK},
{COMMAND, TK_BANG},
{COMMAND, SEPARATOR_OP},
@ -421,22 +435,26 @@ t_stackmatch g_stackmatch[] =
{AND_OR_MINOR, PIPE_SEMI_SEQUENCE},
{AND_OR_MINOR, LINEBREAK},
{AND_OR_MINOR, AND_OR_MAJOR},
{PIPE_SEQUENCE, TK_WHILE},
{PIPE_SEQUENCE, LINEBREAK},
{PIPE_SEQUENCE, TK_BANG},
{PIPE_SEQUENCE, SEPARATOR_OP},
{PIPE_SEQUENCE, NEWLINE_LIST},
{PIPE_SEQUENCE, AND_OR_MAJOR},
{PIPE_SEMI_SEQUENCE, TK_WHILE},
{PIPE_SEMI_SEQUENCE, LINEBREAK},
{PIPE_SEMI_SEQUENCE, TK_BANG},
{PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
{PIPE_SEMI_SEQUENCE, NEWLINE_LIST},
{PIPE_SEMI_SEQUENCE, AND_OR_MAJOR},
{PIPELINE, TK_WHILE},
{PIPELINE, LINEBREAK},
{PIPELINE, SEPARATOR_OP},
{PIPELINE, NEWLINE_LIST},
{PIPELINE, AND_OR_MAJOR},
{AND_OR_MAJOR, LINEBREAK},
{AND_OR_MAJOR, AND_OR_MAJOR},
{AND_OR, TK_WHILE},
{AND_OR, LINEBREAK},
{AND_OR, SEPARATOR_OP},
{AND_OR, NEWLINE_LIST},
@ -452,7 +470,7 @@ int eval_sym(t_sym stack, t_sym new_sym)
{
int i;
// DG("eval head %s && sym %s", read_state(stack), read_state(new_sym));
DG("eval head %s && sym %s", read_state(stack), read_state(new_sym));
i = 0;
while (g_stackmatch[i].top)
{

View file

@ -6,20 +6,33 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 14:30:22 by ariard #+# #+# */
/* Updated: 2017/02/17 17:05:21 by ariard ### ########.fr */
/* Updated: 2017/02/17 19:48:01 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
#include "parser.h"
static void insert_linebreak(t_list **lst)
{
t_token *token;
token = (*lst)->content;
token->type = LINEBREAK;
}
static int end_instruction(t_sym sym)
{
if (sym == CMD_SUPERIOR || sym == PIPE_SEMI_SEQUENCE)
return (1);
return (0);
}
int ft_parse2(t_btree **ast, t_list **token)
{
t_sym *new_sym;
t_sym *stack;
t_parstate state;
//to delete
(void)ast;
state = UNDEFINED;
new_sym = ft_memalloc(sizeof(t_sym));
stack = ft_memalloc(sizeof(t_sym) * 1000);
@ -27,11 +40,11 @@ int ft_parse2(t_btree **ast, t_list **token)
while (*token)
{
produce_sym(*stack, new_sym, token);
// DG("new sym %s", read_state(*new_sym));
DG("new sym %s", read_state(*new_sym));
if (eval_sym(*stack, *new_sym))
state = ERROR;
else
{
{
aggregate_sym(&stack, new_sym, &state);
push_stack(++stack, *new_sym);
}
@ -44,7 +57,10 @@ int ft_parse2(t_btree **ast, t_list **token)
if (state == SUCCESS)
ft_putstr("success");
build_tree(ast, token);
ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free);
if (end_instruction(*stack) && !(*token)->next)
insert_linebreak(token);
else
ft_lst_delif(token, (*token)->content, &ft_addrcmp, &token_free);
}
return (0);
}

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 17:58:34 by ariard #+# #+# */
/* Updated: 2017/02/17 17:04:44 by ariard ### ########.fr */
/* Updated: 2017/02/17 19:48:06 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -29,6 +29,8 @@ t_prodmatch g_prodmatch[] =
{TK_N_WORD, TK_PIPE, CMD_NAME},
{TK_N_WORD, AND_OR, CMD_NAME},
{TK_N_WORD, AND_OR_MAJOR, CMD_NAME},
{TK_N_WORD, TK_WHILE, CMD_NAME},
{TK_N_WORD, TK_DO, CMD_NAME},
{TK_N_WORD, NEWLINE_LIST, CMD_NAME},
{TK_N_WORD, TK_BANG, CMD_NAME},
@ -46,13 +48,18 @@ t_prodmatch g_prodmatch[] =
{TK_NAME, SEPARATOR_OP, FNAME},
{TK_NAME, NEWLINE_LIST, FNAME},
{TK_NAME, TK_FOR, NAME},
{TK_NEWLINE, TK_DO, NEWLINE_LIST},
{TK_NEWLINE, CMD_NAME, NEWLINE_LIST},
{TK_NEWLINE, COMPLETE_COMMANDS, NEWLINE_LIST},
{TK_NEWLINE, LINEBREAK, NEWLINE_LIST},
{TK_NEWLINE, CMD_SUPERIOR, LINEBREAK},
{TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK},
{TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST},
{TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP},
{TK_SEMI, TERM, SEPARATOR_OP},
{TK_SEMI, LIST, SEPARATOR_OP},
{TK_SEMI, COMPOUND_LIST, SEPARATOR_OP},
{TK_AMP, CMD_SUPERIOR, SEPARATOR_OP},
{TK_AMP, TERM, SEPARATOR_OP},
{TK_AMP, LIST, SEPARATOR_OP},
{TK_AMP, COMPOUND_LIST, SEPARATOR_OP},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 15:32:10 by ariard #+# #+# */
/* Updated: 2017/02/13 22:40:40 by ariard ### ########.fr */
/* Updated: 2017/02/17 19:40:45 by ariard ### ########.fr */
/* */
/* ************************************************************************** */
@ -14,6 +14,26 @@
char *read_state(t_sym current)
{
if (current == SEQUENTIAL_SEP)
return ("SEQUENTIAL_SEP");
if (current == SEPARATOR)
return ("SEPARATOR");
if (current == SEPARATOR_OP)
return ("SEPARATOR_OP");
if (current == TERM)
return ("TERM");
if (current == COMPOUND_LIST)
return ("COMPOUND_LIST");
if (current == DO_GROUP)
return ("DO_GROUP");
if (current == TK_NEWLINE)
return ("TK_NEWLINE");
if (current == TK_WHILE)
return ("TK_WHILE");
if (current == TK_DO)
return ("TK_DO");
if (current == TK_DONE)
return ("TK_DONE");
if (current == AND_OR_MINOR)
return("AND_OR_MINOR");
if (current == AND_OR_MAJOR)
@ -92,27 +112,9 @@ char *read_state(t_sym current)
return ("TK_SEMI");
if (current == ALL)
return ("ALL");
/* if (current == NEWLINE_LIST)
if (current == NEWLINE_LIST)
return ("NEWLINE_LIST");
if (current == SYM_DLESS)
return ("DLESS");
if (current == SYM_DGREAT)
return ("DGREAT");
if (current == SYM_GREATAND)
return ("GREATAND");
*/ if (current == TK_GREAT)
return ("GREAT");
if (current == TK_LESS)
return ("LESS");
/* if (current == SYM_LESSAND)
return ("LESSAND");
if (current == SYM_LESS)
return ("LESS");
if (current == SIMPLE_COMMAND)
return ("SIMPLE_COMMAND");
if (current == PROGRAM)
return ("PROGRAM");
*/ if (current == LINEBREAK)
if (current == LINEBREAK)
return ("LINEBREAK");
if (current != 0)
return ("NON-DEFINED");

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/15 18:57:44 by ariard #+# #+# */
/* Updated: 2017/02/17 17:14:34 by ariard ### ########.fr */
/* Updated: 2017/02/17 17:19:41 by ariard ### ########.fr */
/* */
/* ************************************************************************** */

View file

@ -0,0 +1 @@
ls |