grammar if stable
This commit is contained in:
parent
fea9429e9f
commit
3d65d42708
14 changed files with 97 additions and 17 deletions
BIN
42sh/includes/.parser.h.swn
Normal file
BIN
42sh/includes/.parser.h.swn
Normal file
Binary file not shown.
|
|
@ -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/02/19 18:43:02 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 14:57:52 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -121,6 +121,8 @@ enum e_sym
|
||||||
AND_OR_MAJOR,
|
AND_OR_MAJOR,
|
||||||
AND_OR_MINOR,
|
AND_OR_MINOR,
|
||||||
END_COMMAND,
|
END_COMMAND,
|
||||||
|
CONDITION,
|
||||||
|
COMPLETE_CONDITION,
|
||||||
ALL = 200,
|
ALL = 200,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
4
42sh/sample/if/01_if_easy.sh
Normal file
4
42sh/sample/if/01_if_easy.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
if ls ;
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
fi
|
||||||
10
42sh/sample/if/02_if_elif.sh
Normal file
10
42sh/sample/if/02_if_elif.sh
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
if ls ;
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
elif ls
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
elif ls
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
fi
|
||||||
5
42sh/sample/if/03_if_else.sh
Normal file
5
42sh/sample/if/03_if_else.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
if cat yolo ;
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
else ls
|
||||||
|
fi
|
||||||
11
42sh/sample/if/04_if_elseelsif.sh
Normal file
11
42sh/sample/if/04_if_elseelsif.sh
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
if cat yolo ;
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
elif ls
|
||||||
|
then
|
||||||
|
pwd
|
||||||
|
elif pwd
|
||||||
|
then
|
||||||
|
ls
|
||||||
|
else ls
|
||||||
|
fi
|
||||||
BIN
42sh/src/parser/.eval_sym.c.swn
Normal file
BIN
42sh/src/parser/.eval_sym.c.swn
Normal file
Binary file not shown.
BIN
42sh/src/parser/.produce_sym.c.swn
Normal file
BIN
42sh/src/parser/.produce_sym.c.swn
Normal file
Binary file not shown.
BIN
42sh/src/parser/.read_stack.c.swn
Normal file
BIN
42sh/src/parser/.read_stack.c.swn
Normal file
Binary file not shown.
|
|
@ -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/19 19:32:24 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 16:06:08 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -20,8 +20,10 @@ t_aggrematch g_aggrematch[] =
|
||||||
{TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0},
|
{TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0},
|
||||||
{TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
|
{TK_PIPE, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
|
||||||
{TK_FI, ELSE_PART, IF_CLAUSE, TK_IF},
|
{TK_FI, ELSE_PART, IF_CLAUSE, TK_IF},
|
||||||
{TK_FI, COMPOUND_LIST, IF_CLAUSE, TK_IF},
|
{TK_FI, COMPOUND_LIST, IF_CLAUSE, COMPLETE_CONDITION},
|
||||||
{TK_FI, CMD_SUPERIOR, IF_CLAUSE, TK_IF},
|
{TK_FI, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION},
|
||||||
|
{TK_FI, CONDITION, IF_CLAUSE, COMPLETE_CONDITION},
|
||||||
|
{TK_THEN, CONDITION, COMPLETE_CONDITION, CONDITION},
|
||||||
{TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO},
|
{TK_DONE, CMD_SUPERIOR, DO_GROUP, TK_DO},
|
||||||
{TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO},
|
{TK_DONE, COMPOUND_LIST, DO_GROUP, TK_DO},
|
||||||
//Esac ?
|
//Esac ?
|
||||||
|
|
@ -35,8 +37,10 @@ t_aggrematch g_aggrematch[] =
|
||||||
//watch this
|
//watch this
|
||||||
{SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0},
|
{SEPARATOR_OP, CMD_SUPERIOR, SEPARATOR, 0},
|
||||||
{SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0},
|
{SEPARATOR_OP, COMPOUND_LIST, SEPARATOR, 0},
|
||||||
|
{SEPARATOR_OP, PIPE_SEMI_SEQUENCE, SEPARATOR, 0},
|
||||||
{SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR},
|
{SEPARATOR, CMD_SUPERIOR, END_COMMAND, CMD_SUPERIOR},
|
||||||
{SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
{SEPARATOR, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
||||||
|
{SEPARATOR, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
|
||||||
{LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP},
|
{LINEBREAK, SEPARATOR_OP, SEPARATOR, SEPARATOR_OP},
|
||||||
{LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI},
|
{LINEBREAK, TK_SEMI, SEQUENTIAL_SEP, TK_SEMI},
|
||||||
|
|
||||||
|
|
@ -64,6 +68,8 @@ t_aggrematch g_aggrematch[] =
|
||||||
{NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, 0},
|
{NEWLINE_LIST, WORDLIST, SEQUENTIAL_SEP, 0},
|
||||||
{NEWLINE_LIST, TERM, SEPARATOR, 0},
|
{NEWLINE_LIST, TERM, SEPARATOR, 0},
|
||||||
{NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0},
|
{NEWLINE_LIST, COMPOUND_LIST, SEPARATOR, 0},
|
||||||
|
{NEWLINE_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION},
|
||||||
|
{NEWLINE_LIST, CONDITION, CONDITION, CONDITION},
|
||||||
|
|
||||||
//to check
|
//to check
|
||||||
{IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER},
|
{IO_HERE, TK_IO_NUMBER, IO_REDIRECT, TK_IO_NUMBER},
|
||||||
|
|
@ -94,7 +100,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, COMPOUND_COMMAND},
|
{REDIRECT_LIST, COMPOUND_COMMAND, COMPOUND_COMMAND, COMPOUND_COMMAND},
|
||||||
{CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX},
|
{CMD_SUFFIX, CMD_WORD, SIMPLE_COMMAND, CMD_PREFIX},
|
||||||
{CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME},
|
{CMD_SUFFIX, CMD_NAME, SIMPLE_COMMAND, CMD_NAME},
|
||||||
|
{CMD_SUFFIX, CMD_SUPERIOR, SIMPLE_COMMAND, CMD_SUPERIOR},
|
||||||
//to abstract
|
//to abstract
|
||||||
{CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0},
|
{CMD_PREFIX, LINEBREAK, SIMPLE_COMMAND, 0},
|
||||||
{CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0},
|
{CMD_PREFIX, TK_BANG, SIMPLE_COMMAND, 0},
|
||||||
|
|
@ -114,6 +120,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{CMD_NAME, TK_ELSE, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_ELSE, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_THEN, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_THEN, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0},
|
{CMD_NAME, COMPOUND_LIST, CMD_SUPERIOR, 0},
|
||||||
|
{CMD_NAME, COMPLETE_CONDITION, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0},
|
{CMD_NAME, TK_PIPE, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0},
|
{CMD_NAME, PIPE_SEMI_SEQUENCE, CMD_SUPERIOR, 0},
|
||||||
{CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0},
|
{CMD_NAME, AND_OR_MAJOR, CMD_SUPERIOR, 0},
|
||||||
|
|
@ -129,7 +136,8 @@ t_aggrematch g_aggrematch[] =
|
||||||
{LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL},
|
{LOOP, TK_UNTIL, UNTIL_CLAUSE, TK_UNTIL},
|
||||||
{UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
{UNTIL_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
||||||
{WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
{WHILE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
||||||
{ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF},
|
// {ELSE_PART, COMPOUND_LIST, ELSE_PART, TK_ELIF},
|
||||||
|
// {ELSE_PART, COMPLETE_CONDITION, IF_CLAUSE, COMPLETE_CONDITION},
|
||||||
{IF_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
{IF_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
||||||
{PATTERN, TK_PAREN_OPEN, PATTERN_CASE, TK_PAREN_OPEN},
|
{PATTERN, TK_PAREN_OPEN, PATTERN_CASE, TK_PAREN_OPEN},
|
||||||
{PATTERN, CASE_LIST, PATTERN_CASE, 0},
|
{PATTERN, CASE_LIST, PATTERN_CASE, 0},
|
||||||
|
|
@ -140,7 +148,10 @@ t_aggrematch g_aggrematch[] =
|
||||||
{CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
{CASE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
||||||
{FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
{FOR_CLAUSE, ALL, COMPOUND_COMMAND, 0},
|
||||||
{TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK},
|
{TERM, LINEBREAK, COMPOUND_LIST, LINEBREAK},
|
||||||
{COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE},
|
// {COMPOUND_LIST, TK_ELSE, ELSE_PART, TK_ELSE},
|
||||||
|
{COMPOUND_LIST, TK_IF, CONDITION, TK_IF},
|
||||||
|
{COMPOUND_LIST, TK_THEN, CONDITION, TK_THEN},
|
||||||
|
{COMPOUND_LIST, COMPLETE_CONDITION, COMPLETE_CONDITION, COMPLETE_CONDITION},
|
||||||
// {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF},
|
// {COMPOUND_LIST, TK_THEN, ELSE_PART, TK_ELIF},
|
||||||
{COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
{COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST, COMPOUND_LIST},
|
||||||
{SUBSHELL, ALL, COMPOUND_COMMAND, 0},
|
{SUBSHELL, ALL, COMPOUND_COMMAND, 0},
|
||||||
|
|
@ -169,6 +180,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_ELIF, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_THEN, PIPE_SEQUENCE, 0},
|
||||||
{END_COMMAND, TK_ELSE, PIPE_SEQUENCE, 0},
|
{END_COMMAND, TK_ELSE, 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_BANG, PIPELINE, TK_BANG},
|
{PIPE_SEQUENCE, TK_BANG, PIPELINE, TK_BANG},
|
||||||
|
|
@ -182,6 +194,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{PIPE_SEQUENCE, TK_THEN, PIPELINE, 0},
|
{PIPE_SEQUENCE, TK_THEN, PIPELINE, 0},
|
||||||
{PIPE_SEQUENCE, TK_ELSE, PIPELINE, 0},
|
{PIPE_SEQUENCE, TK_ELSE, PIPELINE, 0},
|
||||||
{PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0},
|
{PIPE_SEQUENCE, COMPOUND_LIST, PIPELINE, 0},
|
||||||
|
{PIPE_SEQUENCE, COMPLETE_CONDITION, PIPELINE, 0},
|
||||||
{PIPELINE, TK_WHILE, AND_OR, 0},
|
{PIPELINE, TK_WHILE, 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},
|
||||||
|
|
@ -192,6 +205,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{PIPELINE, LINEBREAK, AND_OR, 0},
|
{PIPELINE, LINEBREAK, AND_OR, 0},
|
||||||
// {PIPELINE, LINEBREAK, AND_OR, AND_OR},
|
// {PIPELINE, LINEBREAK, AND_OR, AND_OR},
|
||||||
{PIPELINE, SEPARATOR_OP, AND_OR, 0},
|
{PIPELINE, SEPARATOR_OP, AND_OR, 0},
|
||||||
|
{PIPELINE, COMPLETE_CONDITION, AND_OR, 0},
|
||||||
{PIPELINE, AND_OR_MAJOR, AND_OR, AND_OR_MAJOR},
|
{PIPELINE, AND_OR_MAJOR, AND_OR, 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_MAJOR},
|
||||||
{AND_OR, TK_DO, COMPOUND_LIST, 0},
|
{AND_OR, TK_DO, COMPOUND_LIST, 0},
|
||||||
|
|
@ -201,6 +215,7 @@ t_aggrematch g_aggrematch[] =
|
||||||
{AND_OR, TK_THEN, COMPOUND_LIST, 0},
|
{AND_OR, TK_THEN, COMPOUND_LIST, 0},
|
||||||
{AND_OR, TK_ELSE, COMPOUND_LIST, 0},
|
{AND_OR, TK_ELSE, COMPOUND_LIST, 0},
|
||||||
{AND_OR, COMPOUND_LIST, COMPOUND_LIST, 0},
|
{AND_OR, COMPOUND_LIST, 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},
|
||||||
|
|
|
||||||
|
|
@ -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/19 19:31:38 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 16:06:15 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -176,15 +176,21 @@ t_stackmatch g_stackmatch[] =
|
||||||
{TK_IF, TK_ELIF},
|
{TK_IF, TK_ELIF},
|
||||||
{TK_IF, TK_THEN},
|
{TK_IF, TK_THEN},
|
||||||
{TK_IF, COMPOUND_LIST},
|
{TK_IF, COMPOUND_LIST},
|
||||||
|
{TK_THEN, CONDITION},
|
||||||
{TK_THEN, COMPOUND_LIST},
|
{TK_THEN, COMPOUND_LIST},
|
||||||
{TK_THEN, CMD_SUPERIOR},
|
|
||||||
{TK_ELSE, COMPOUND_LIST},
|
{TK_ELSE, COMPOUND_LIST},
|
||||||
|
{TK_ELSE, CONDITION},
|
||||||
|
{TK_ELSE, COMPLETE_CONDITION},
|
||||||
{TK_ELIF, COMPOUND_LIST},
|
{TK_ELIF, COMPOUND_LIST},
|
||||||
|
{TK_ELIF, COMPLETE_CONDITION},
|
||||||
|
{TK_ELIF, CONDITION},
|
||||||
{TK_FI, ELSE_PART},
|
{TK_FI, ELSE_PART},
|
||||||
{TK_FI, COMPOUND_LIST},
|
{TK_FI, COMPOUND_LIST},
|
||||||
{TK_FI, CMD_SUPERIOR},
|
{TK_FI, CMD_SUPERIOR},
|
||||||
{TK_FI, END_COMMAND},
|
{TK_FI, END_COMMAND},
|
||||||
|
{TK_FI, CONDITION},
|
||||||
{TK_DO, CMD_SUPERIOR},
|
{TK_DO, CMD_SUPERIOR},
|
||||||
|
{TK_FI, COMPLETE_CONDITION},
|
||||||
{TK_DO, COMPOUND_LIST},
|
{TK_DO, COMPOUND_LIST},
|
||||||
{TK_DO, NAME},
|
{TK_DO, NAME},
|
||||||
{TK_DO, SEQUENTIAL_SEP},
|
{TK_DO, SEQUENTIAL_SEP},
|
||||||
|
|
@ -263,13 +269,16 @@ t_stackmatch g_stackmatch[] =
|
||||||
{END_COMMAND, TK_ELSE},
|
{END_COMMAND, TK_ELSE},
|
||||||
{END_COMMAND, LINEBREAK},
|
{END_COMMAND, LINEBREAK},
|
||||||
{END_COMMAND, COMPOUND_LIST},
|
{END_COMMAND, COMPOUND_LIST},
|
||||||
|
{END_COMMAND, COMPLETE_CONDITION},
|
||||||
{SEPARATOR, CMD_SUPERIOR},
|
{SEPARATOR, CMD_SUPERIOR},
|
||||||
{SEPARATOR, TERM},
|
{SEPARATOR, TERM},
|
||||||
{SEPARATOR, COMPOUND_LIST},
|
{SEPARATOR, COMPOUND_LIST},
|
||||||
|
{SEPARATOR, PIPE_SEMI_SEQUENCE},
|
||||||
{SEPARATOR_OP, CMD_SUPERIOR},
|
{SEPARATOR_OP, CMD_SUPERIOR},
|
||||||
{SEPARATOR_OP, LIST},
|
{SEPARATOR_OP, LIST},
|
||||||
{SEPARATOR_OP, TERM},
|
{SEPARATOR_OP, TERM},
|
||||||
{SEPARATOR_OP, COMPOUND_LIST},
|
{SEPARATOR_OP, COMPOUND_LIST},
|
||||||
|
{SEPARATOR_OP, PIPE_SEMI_SEQUENCE},
|
||||||
{LINEBREAK, TK_SEMI},
|
{LINEBREAK, TK_SEMI},
|
||||||
{LINEBREAK, SEPARATOR_OP},
|
{LINEBREAK, SEPARATOR_OP},
|
||||||
{LINEBREAK, TK_PAREN_CLOSE},
|
{LINEBREAK, TK_PAREN_CLOSE},
|
||||||
|
|
@ -298,6 +307,8 @@ t_stackmatch g_stackmatch[] =
|
||||||
{NEWLINE_LIST, TERM},
|
{NEWLINE_LIST, TERM},
|
||||||
{NEWLINE_LIST, COMPOUND_LIST},
|
{NEWLINE_LIST, COMPOUND_LIST},
|
||||||
{NEWLINE_LIST, COMPLETE_COMMANDS},
|
{NEWLINE_LIST, COMPLETE_COMMANDS},
|
||||||
|
{NEWLINE_LIST, COMPLETE_CONDITION},
|
||||||
|
{NEWLINE_LIST, CONDITION},
|
||||||
{HERE_END, TK_DLESS},
|
{HERE_END, TK_DLESS},
|
||||||
{HERE_END, TK_DLESSDASH},
|
{HERE_END, TK_DLESSDASH},
|
||||||
{IO_HERE, TK_IO_NUMBER},
|
{IO_HERE, TK_IO_NUMBER},
|
||||||
|
|
@ -345,6 +356,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{REDIRECT_LIST, COMPOUND_COMMAND},
|
{REDIRECT_LIST, COMPOUND_COMMAND},
|
||||||
{CMD_SUFFIX, CMD_WORD},
|
{CMD_SUFFIX, CMD_WORD},
|
||||||
{CMD_SUFFIX, CMD_NAME},
|
{CMD_SUFFIX, CMD_NAME},
|
||||||
|
{CMD_SUFFIX, CMD_SUPERIOR},
|
||||||
{CMD_PREFIX, LINEBREAK},
|
{CMD_PREFIX, LINEBREAK},
|
||||||
{CMD_PREFIX, TK_BANG},
|
{CMD_PREFIX, TK_BANG},
|
||||||
{CMD_PREFIX, SEPARATOR_OP},
|
{CMD_PREFIX, SEPARATOR_OP},
|
||||||
|
|
@ -364,6 +376,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{CMD_NAME, TK_THEN},
|
{CMD_NAME, TK_THEN},
|
||||||
{CMD_NAME, TK_ELSE},
|
{CMD_NAME, TK_ELSE},
|
||||||
{CMD_NAME, COMPOUND_LIST},
|
{CMD_NAME, COMPOUND_LIST},
|
||||||
|
{CMD_NAME, COMPLETE_CONDITION},
|
||||||
|
|
||||||
{CMD_SUPERIOR, TK_WHILE},
|
{CMD_SUPERIOR, TK_WHILE},
|
||||||
{CMD_SUPERIOR, TK_DO},
|
{CMD_SUPERIOR, TK_DO},
|
||||||
|
|
@ -372,6 +385,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{CMD_SUPERIOR, TK_THEN},
|
{CMD_SUPERIOR, TK_THEN},
|
||||||
{CMD_SUPERIOR, TK_ELSE},
|
{CMD_SUPERIOR, TK_ELSE},
|
||||||
{CMD_SUPERIOR, COMPOUND_LIST},
|
{CMD_SUPERIOR, COMPOUND_LIST},
|
||||||
|
{CMD_SUPERIOR, COMPLETE_CONDITION},
|
||||||
{CMD_SUPERIOR, LINEBREAK,},
|
{CMD_SUPERIOR, LINEBREAK,},
|
||||||
{CMD_SUPERIOR, TK_BANG},
|
{CMD_SUPERIOR, TK_BANG},
|
||||||
{CMD_SUPERIOR, SEPARATOR_OP},
|
{CMD_SUPERIOR, SEPARATOR_OP},
|
||||||
|
|
@ -387,6 +401,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{SIMPLE_COMMAND, TK_THEN},
|
{SIMPLE_COMMAND, TK_THEN},
|
||||||
{SIMPLE_COMMAND, TK_ELSE},
|
{SIMPLE_COMMAND, TK_ELSE},
|
||||||
{SIMPLE_COMMAND, COMPOUND_LIST},
|
{SIMPLE_COMMAND, COMPOUND_LIST},
|
||||||
|
{SIMPLE_COMMAND, COMPLETE_CONDITION},
|
||||||
{SIMPLE_COMMAND, LINEBREAK},
|
{SIMPLE_COMMAND, LINEBREAK},
|
||||||
{SIMPLE_COMMAND, TK_BANG},
|
{SIMPLE_COMMAND, TK_BANG},
|
||||||
{SIMPLE_COMMAND, SEPARATOR_OP},
|
{SIMPLE_COMMAND, SEPARATOR_OP},
|
||||||
|
|
@ -399,6 +414,9 @@ t_stackmatch g_stackmatch[] =
|
||||||
{DO_GROUP, SEQUENTIAL_SEP},
|
{DO_GROUP, SEQUENTIAL_SEP},
|
||||||
{LOOP, TK_WHILE},
|
{LOOP, TK_WHILE},
|
||||||
{LOOP, TK_UNTIL},
|
{LOOP, TK_UNTIL},
|
||||||
|
{CONDITION, LINEBREAK},
|
||||||
|
{CONDITION, COMPOUND_LIST},
|
||||||
|
{COMPLETE_CONDITION, LINEBREAK},
|
||||||
{BRACE_GROUP, LINEBREAK},
|
{BRACE_GROUP, LINEBREAK},
|
||||||
{BRACE_GROUP, TK_BANG},
|
{BRACE_GROUP, TK_BANG},
|
||||||
{BRACE_GROUP, SEPARATOR_OP},
|
{BRACE_GROUP, SEPARATOR_OP},
|
||||||
|
|
@ -432,7 +450,9 @@ t_stackmatch g_stackmatch[] =
|
||||||
{WHILE_CLAUSE, TK_THEN},
|
{WHILE_CLAUSE, TK_THEN},
|
||||||
{WHILE_CLAUSE, TK_ELSE},
|
{WHILE_CLAUSE, TK_ELSE},
|
||||||
{WHILE_CLAUSE, COMPOUND_LIST},
|
{WHILE_CLAUSE, COMPOUND_LIST},
|
||||||
{ELSE_PART, COMPOUND_LIST},
|
{WHILE_CLAUSE, COMPLETE_CONDITION},
|
||||||
|
// {ELSE_PART, COMPOUND_LIST},
|
||||||
|
// {ELSE_PART, COMPLETE_CONDITION},
|
||||||
{IF_CLAUSE, LINEBREAK},
|
{IF_CLAUSE, LINEBREAK},
|
||||||
{IF_CLAUSE, TK_BANG},
|
{IF_CLAUSE, TK_BANG},
|
||||||
{IF_CLAUSE, SEPARATOR_OP},
|
{IF_CLAUSE, SEPARATOR_OP},
|
||||||
|
|
@ -444,6 +464,8 @@ t_stackmatch g_stackmatch[] =
|
||||||
{IF_CLAUSE, TK_ELIF},
|
{IF_CLAUSE, TK_ELIF},
|
||||||
{IF_CLAUSE, TK_THEN},
|
{IF_CLAUSE, TK_THEN},
|
||||||
{IF_CLAUSE, TK_ELSE},
|
{IF_CLAUSE, TK_ELSE},
|
||||||
|
{IF_CLAUSE, COMPOUND_LIST},
|
||||||
|
{IF_CLAUSE, COMPLETE_COMMAND},
|
||||||
|
|
||||||
{PATTERN, TK_PAREN_OPEN},
|
{PATTERN, TK_PAREN_OPEN},
|
||||||
{PATTERN, CASE_LIST},
|
{PATTERN, CASE_LIST},
|
||||||
|
|
@ -478,6 +500,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMPOUND_LIST, TK_THEN},
|
{COMPOUND_LIST, TK_THEN},
|
||||||
{COMPOUND_LIST, TK_ELSE},
|
{COMPOUND_LIST, TK_ELSE},
|
||||||
{COMPOUND_LIST, COMPOUND_LIST},
|
{COMPOUND_LIST, COMPOUND_LIST},
|
||||||
|
{COMPOUND_LIST, COMPLETE_CONDITION},
|
||||||
{SUBSHELL, LINEBREAK},
|
{SUBSHELL, LINEBREAK},
|
||||||
{SUBSHELL, TK_BANG},
|
{SUBSHELL, TK_BANG},
|
||||||
{SUBSHELL, SEPARATOR_OP},
|
{SUBSHELL, SEPARATOR_OP},
|
||||||
|
|
@ -496,6 +519,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMPOUND_COMMAND, TK_THEN},
|
{COMPOUND_COMMAND, TK_THEN},
|
||||||
{COMPOUND_COMMAND, TK_ELSE},
|
{COMPOUND_COMMAND, TK_ELSE},
|
||||||
{COMPOUND_COMMAND, COMPOUND_LIST},
|
{COMPOUND_COMMAND, COMPOUND_LIST},
|
||||||
|
{COMPOUND_COMMAND, COMPLETE_CONDITION},
|
||||||
{COMMAND, TK_WHILE},
|
{COMMAND, TK_WHILE},
|
||||||
{COMMAND, LINEBREAK},
|
{COMMAND, LINEBREAK},
|
||||||
{COMMAND, TK_DO},
|
{COMMAND, TK_DO},
|
||||||
|
|
@ -504,6 +528,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{COMMAND, TK_THEN},
|
{COMMAND, TK_THEN},
|
||||||
{COMMAND, TK_ELSE},
|
{COMMAND, TK_ELSE},
|
||||||
{COMMAND, COMPOUND_LIST},
|
{COMMAND, COMPOUND_LIST},
|
||||||
|
{COMMAND, COMPLETE_CONDITION},
|
||||||
{COMMAND, TK_BANG},
|
{COMMAND, TK_BANG},
|
||||||
{COMMAND, SEPARATOR_OP},
|
{COMMAND, SEPARATOR_OP},
|
||||||
{COMMAND, NEWLINE_LIST},
|
{COMMAND, NEWLINE_LIST},
|
||||||
|
|
@ -519,6 +544,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{PIPE_SEQUENCE, TK_THEN},
|
{PIPE_SEQUENCE, TK_THEN},
|
||||||
{PIPE_SEQUENCE, TK_ELSE},
|
{PIPE_SEQUENCE, TK_ELSE},
|
||||||
{PIPE_SEQUENCE, COMPOUND_LIST},
|
{PIPE_SEQUENCE, COMPOUND_LIST},
|
||||||
|
{PIPE_SEQUENCE, COMPLETE_CONDITION},
|
||||||
{PIPE_SEQUENCE, LINEBREAK},
|
{PIPE_SEQUENCE, LINEBREAK},
|
||||||
{PIPE_SEQUENCE, TK_BANG},
|
{PIPE_SEQUENCE, TK_BANG},
|
||||||
{PIPE_SEQUENCE, SEPARATOR_OP},
|
{PIPE_SEQUENCE, SEPARATOR_OP},
|
||||||
|
|
@ -531,6 +557,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{PIPE_SEMI_SEQUENCE, TK_THEN},
|
{PIPE_SEMI_SEQUENCE, TK_THEN},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_ELSE},
|
{PIPE_SEMI_SEQUENCE, TK_ELSE},
|
||||||
{PIPE_SEMI_SEQUENCE, COMPOUND_LIST},
|
{PIPE_SEMI_SEQUENCE, COMPOUND_LIST},
|
||||||
|
{PIPE_SEMI_SEQUENCE, COMPLETE_CONDITION},
|
||||||
{PIPE_SEMI_SEQUENCE, LINEBREAK},
|
{PIPE_SEMI_SEQUENCE, LINEBREAK},
|
||||||
{PIPE_SEMI_SEQUENCE, TK_BANG},
|
{PIPE_SEMI_SEQUENCE, TK_BANG},
|
||||||
{PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
|
{PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
|
||||||
|
|
@ -543,6 +570,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{PIPELINE, TK_THEN},
|
{PIPELINE, TK_THEN},
|
||||||
{PIPELINE, TK_ELSE},
|
{PIPELINE, TK_ELSE},
|
||||||
{PIPELINE, COMPOUND_LIST},
|
{PIPELINE, COMPOUND_LIST},
|
||||||
|
{PIPELINE, COMPLETE_CONDITION},
|
||||||
{PIPELINE, LINEBREAK},
|
{PIPELINE, LINEBREAK},
|
||||||
{PIPELINE, SEPARATOR_OP},
|
{PIPELINE, SEPARATOR_OP},
|
||||||
{PIPELINE, NEWLINE_LIST},
|
{PIPELINE, NEWLINE_LIST},
|
||||||
|
|
@ -556,6 +584,7 @@ t_stackmatch g_stackmatch[] =
|
||||||
{AND_OR, TK_THEN},
|
{AND_OR, TK_THEN},
|
||||||
{AND_OR, TK_ELSE},
|
{AND_OR, TK_ELSE},
|
||||||
{AND_OR, COMPOUND_LIST},
|
{AND_OR, COMPOUND_LIST},
|
||||||
|
{AND_OR, COMPLETE_CONDITION},
|
||||||
{AND_OR, LINEBREAK},
|
{AND_OR, LINEBREAK},
|
||||||
{AND_OR, SEPARATOR_OP},
|
{AND_OR, SEPARATOR_OP},
|
||||||
{AND_OR, NEWLINE_LIST},
|
{AND_OR, NEWLINE_LIST},
|
||||||
|
|
|
||||||
|
|
@ -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/19 19:31:40 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 15:54:45 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -25,6 +25,7 @@ t_prodmatch g_prodmatch[] =
|
||||||
{TK_N_WORD, TK_CLOBBER, FILENAME},
|
{TK_N_WORD, TK_CLOBBER, FILENAME},
|
||||||
{TK_N_WORD, CMD_WORD, CMD_SUFFIX},
|
{TK_N_WORD, CMD_WORD, CMD_SUFFIX},
|
||||||
{TK_N_WORD, CMD_NAME, CMD_SUFFIX},
|
{TK_N_WORD, CMD_NAME, CMD_SUFFIX},
|
||||||
|
{TK_N_WORD, CMD_SUPERIOR, CMD_SUFFIX},
|
||||||
{TK_N_WORD, LINEBREAK, CMD_NAME},
|
{TK_N_WORD, LINEBREAK, CMD_NAME},
|
||||||
{TK_N_WORD, TK_PIPE, CMD_NAME},
|
{TK_N_WORD, TK_PIPE, CMD_NAME},
|
||||||
{TK_N_WORD, AND_OR, CMD_NAME},
|
{TK_N_WORD, AND_OR, CMD_NAME},
|
||||||
|
|
@ -36,7 +37,7 @@ t_prodmatch g_prodmatch[] =
|
||||||
{TK_N_WORD, TK_ELIF, CMD_NAME},
|
{TK_N_WORD, TK_ELIF, CMD_NAME},
|
||||||
{TK_N_WORD, TK_ELSE, CMD_NAME},
|
{TK_N_WORD, TK_ELSE, CMD_NAME},
|
||||||
{TK_N_WORD, COMPOUND_LIST, CMD_NAME},
|
{TK_N_WORD, COMPOUND_LIST, CMD_NAME},
|
||||||
|
{TK_N_WORD, COMPLETE_CONDITION, CMD_NAME},
|
||||||
{TK_N_WORD, NEWLINE_LIST, CMD_NAME},
|
{TK_N_WORD, NEWLINE_LIST, CMD_NAME},
|
||||||
{TK_N_WORD, TK_BANG, CMD_NAME},
|
{TK_N_WORD, TK_BANG, CMD_NAME},
|
||||||
{TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME},
|
{TK_N_WORD, PIPE_SEMI_SEQUENCE, CMD_NAME},
|
||||||
|
|
@ -66,9 +67,12 @@ t_prodmatch g_prodmatch[] =
|
||||||
{TK_NEWLINE, CMD_SUPERIOR, LINEBREAK},
|
{TK_NEWLINE, CMD_SUPERIOR, LINEBREAK},
|
||||||
{TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK},
|
{TK_NEWLINE, PIPE_SEMI_SEQUENCE, LINEBREAK},
|
||||||
{TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST},
|
{TK_NEWLINE, COMPOUND_LIST, NEWLINE_LIST},
|
||||||
|
{TK_NEWLINE, COMPLETE_CONDITION, NEWLINE_LIST},
|
||||||
|
{TK_NEWLINE, CONDITION, NEWLINE_LIST},
|
||||||
{TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP},
|
{TK_SEMI, CMD_SUPERIOR, SEPARATOR_OP},
|
||||||
{TK_SEMI, TERM, SEPARATOR_OP},
|
{TK_SEMI, TERM, SEPARATOR_OP},
|
||||||
{TK_SEMI, LIST, SEPARATOR_OP},
|
{TK_SEMI, LIST, SEPARATOR_OP},
|
||||||
|
{TK_SEMI, PIPE_SEMI_SEQUENCE, SEPARATOR_OP},
|
||||||
{TK_AMP, CMD_SUPERIOR, SEPARATOR_OP},
|
{TK_AMP, CMD_SUPERIOR, SEPARATOR_OP},
|
||||||
{TK_AMP, TERM, SEPARATOR_OP},
|
{TK_AMP, TERM, SEPARATOR_OP},
|
||||||
{TK_AMP, LIST, SEPARATOR_OP},
|
{TK_AMP, LIST, SEPARATOR_OP},
|
||||||
|
|
|
||||||
|
|
@ -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/19 19:31:42 by ariard ### ########.fr */
|
/* Updated: 2017/02/20 15:04:21 by ariard ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|
@ -14,6 +14,10 @@
|
||||||
|
|
||||||
char *read_state(t_sym current)
|
char *read_state(t_sym current)
|
||||||
{
|
{
|
||||||
|
if (current == CONDITION)
|
||||||
|
return ("CONDITION");
|
||||||
|
if (current == COMPLETE_CONDITION)
|
||||||
|
return ("COMPLETE_CONDITION");
|
||||||
if (current == TK_ELSE)
|
if (current == TK_ELSE)
|
||||||
return ("TK_ELSE");
|
return ("TK_ELSE");
|
||||||
if (current == TK_FI)
|
if (current == TK_FI)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
if cat yolo
|
|
||||||
then ls
|
|
||||||
else pwd
|
|
||||||
fi
|
|
||||||
Loading…
Reference in a new issue