correction grammar + bug func declaration + error syntax better

This commit is contained in:
Antoine Riard 2017-03-09 16:06:55 +01:00
parent 6660c5ed2c
commit 5590af97a4
8 changed files with 55 additions and 18 deletions

View file

@ -6,7 +6,7 @@
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jack@crans.org> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */ /* Created: 2016/12/13 17:11:48 by jhalford #+# #+# */
/* Updated: 2017/03/09 14:34:12 by jhalford ### ########.fr */ /* Updated: 2017/03/09 15:16:47 by ariard ### ########.fr */
/* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */ /* Updated: 2017/03/07 18:35:11 by jhalford ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -186,6 +186,8 @@ enum e_sym
FOR_WORDLIST, FOR_WORDLIST,
PATTERN_CASE, PATTERN_CASE,
FUNC_NAME, FUNC_NAME,
OPEN_FUNC,
CLOSE_FUNC,
CLOSE_LIST, CLOSE_LIST,
MATH, MATH,
MATH_PLUS, MATH_PLUS,

View file

@ -1,3 +1,3 @@
hello () ( hello() (
echo HELLO echo HELLO
) )

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */ /* Created: 2016/12/06 18:40:58 by jhalford #+# #+# */
/* Updated: 2017/03/09 14:28:51 by jhalford ### ########.fr */ /* Updated: 2017/03/09 16:03:50 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -28,6 +28,7 @@ int handle_instruction(int fd)
ast = NULL; ast = NULL;
while (1) while (1)
{ {
if ((ret = readline(fd, get_lexer_stack(lexer) || if ((ret = readline(fd, get_lexer_stack(lexer) ||
parser.state == UNDEFINED || lexer.state == HEREDOC, &str))) parser.state == UNDEFINED || lexer.state == HEREDOC, &str)))
{ {
@ -69,7 +70,7 @@ int handle_instruction(int fd)
error_syntax(&token, &parser, &ast); error_syntax(&token, &parser, &ast);
} }
DG("Before execution:"); DG("Before execution:");
// btree_print(STDBUG, ast, &ft_putast); btree_print(STDBUG, ast, &ft_putast);
if (ft_exec(&ast)) if (ft_exec(&ast))
return (1); return (1);
instruction_free(&token, &parser, &ast); instruction_free(&token, &parser, &ast);
@ -122,6 +123,7 @@ int main(int ac, char **av)
SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF", fd); SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF", fd);
while (handle_instruction(fd) == 0) while (handle_instruction(fd) == 0)
{ {
DG();
// lexer_clean; // lexer_clean;
// parser_clean; // parser_clean;
; ;

View file

@ -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/03/08 16:19:23 by ariard ### ########.fr */ /* Updated: 2017/03/09 16:04:46 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -71,7 +71,7 @@ int add_cmd(t_btree **ast, t_list **lst)
int i; int i;
i = -1; i = -1;
while (++i < 14) while (++i < 17)
if (g_distrostree[i].test(ast, lst) == 1) if (g_distrostree[i].test(ast, lst) == 1)
{ {
DG("add : %d", i); DG("add : %d", i);

View file

@ -23,8 +23,8 @@ t_aggrematch g_aggrematch[] =
{TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_DSEMI, PIPE_SEMI_SEQUENCE, PIPE_SEQUENCE, PIPE_SEMI_SEQUENCE},
{TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0}, {TK_PAREN_OPEN, TK_IN, PATTERN_CASE, 0},
{TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0}, {TK_PAREN_OPEN, CASE_LIST_NS, PATTERN_CASE, 0},
{TK_PAREN_OPEN, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR},
{TK_PAREN_OPEN, TK_PAREN_OPEN, MATH, TK_PAREN_OPEN}, {TK_PAREN_OPEN, TK_PAREN_OPEN, MATH, TK_PAREN_OPEN},
{TK_PAREN_OPEN, CMD_SUPERIOR, OPEN_FUNC, 0},
{TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0}, {TK_ASSIGNEMENT_WORD, CMD_PREFIX,CMD_PREFIX, 0},
{TK_PIPE, CMD_SUPERIOR, SEQUENCE, CMD_SUPERIOR}, {TK_PIPE, CMD_SUPERIOR, SEQUENCE, CMD_SUPERIOR},
{TK_PIPE, PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE}, {TK_PIPE, PIPE_SEMI_SEQUENCE, SEQUENCE, PIPE_SEMI_SEQUENCE},
@ -45,6 +45,8 @@ t_aggrematch g_aggrematch[] =
{TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, COMPOUND_LIST, SUBSHELL, TK_PAREN_OPEN},
{TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, CMD_SUPERIOR, SUBSHELL, TK_PAREN_OPEN},
{TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN}, {TK_PAREN_CLOSE, PIPE_SEMI_SEQUENCE, SUBSHELL, TK_PAREN_OPEN},
{TK_PAREN_CLOSE, OPEN_FUNC, CLOSE_FUNC, OPEN_FUNC},
{CLOSE_FUNC, CMD_SUPERIOR, FUNC_NAME, CMD_SUPERIOR},
{TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, COMPOUND_LIST, BRACE_CLAUSE, TK_LBRACE},
{TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, CMD_SUPERIOR, BRACE_CLAUSE, TK_LBRACE},
{TK_RBRACE, PIPE_SEMI_SEQUENCE, BRACE_CLAUSE, TK_LBRACE}, {TK_RBRACE, PIPE_SEMI_SEQUENCE, BRACE_CLAUSE, TK_LBRACE},
@ -206,6 +208,7 @@ t_aggrematch g_aggrematch[] =
{CLOSE_LIST, FUNC_NAME, FUNCTION_DEFINITION, FUNC_NAME}, {CLOSE_LIST, FUNC_NAME, FUNCTION_DEFINITION, FUNC_NAME},
{SUBSHELL, ALL, COMPOUND_COMMAND, 0}, {SUBSHELL, ALL, COMPOUND_COMMAND, 0},
{BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0}, {BRACE_CLAUSE, ALL, COMPOUND_COMMAND, 0},
{COMPOUND_COMMAND, FUNC_NAME, COMMAND, FUNC_NAME},
{COMPOUND_COMMAND, ALL, COMMAND, 0}, {COMPOUND_COMMAND, ALL, COMMAND, 0},
{AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE}, {AND_OR_MINOR, PIPE_SEMI_SEQUENCE, AND_OR_MAJOR, PIPE_SEMI_SEQUENCE},
{AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0}, {AND_OR_MINOR, LINEBREAK, AND_OR_MAJOR, 0},

View file

@ -6,7 +6,7 @@
/* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */ /* By: ariard <ariard@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2017/02/09 20:15:35 by ariard #+# #+# */ /* Created: 2017/02/09 20:15:35 by ariard #+# #+# */
/* Updated: 2017/03/06 18:07:06 by ariard ### ########.fr */ /* Updated: 2017/03/09 15:44:56 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -57,11 +57,10 @@ int error_syntax(t_list **lst, t_parser *parser,
{ {
t_token *token; t_token *token;
int i; int i;
int temp;
token = (*lst)->content; token = (*lst)->content;
i = 0; i = 0;
temp = 0;
while (g_errormatch[i].token) while (g_errormatch[i].token)
{ {
if (g_errormatch[i].token == token->type) if (g_errormatch[i].token == token->type)
@ -69,14 +68,15 @@ int error_syntax(t_list **lst, t_parser *parser,
ft_putstr_fd("syntax error near unexpected token `", 2); ft_putstr_fd("syntax error near unexpected token `", 2);
ft_putstr_fd(g_errormatch[i].error, 2); ft_putstr_fd(g_errormatch[i].error, 2);
ft_putstr_fd("'\n", 2); ft_putstr_fd("'\n", 2);
temp = 1; instruction_free(lst, parser, ast);
break ; return (0);
} }
i++; i++;
} }
ft_putstr_fd("syntax error near unexpected token`", 2);
ft_putstr_fd(token->data, 2);
ft_putstr_fd("'\n", 2);
instruction_free(lst, parser, ast); instruction_free(lst, parser, ast);
if (temp == 0)
ft_putstr_fd("grammar error, notify ariard", 2);
return (0); return (0);
} }

View file

@ -214,6 +214,7 @@ t_stackmatch g_stackmatch[] =
{TK_IF, SEQUENCE}, {TK_IF, SEQUENCE},
// watch ! // watch !
{TK_IF, TK_WHILE}, {TK_IF, TK_WHILE},
{TK_IF, FUNC_NAME},
{TK_IF, TK_UNTIL}, {TK_IF, TK_UNTIL},
{TK_IF, TK_IF}, {TK_IF, TK_IF},
{TK_IF, TK_DO}, {TK_IF, TK_DO},
@ -255,6 +256,7 @@ t_stackmatch g_stackmatch[] =
{TK_CASE, TK_THEN}, {TK_CASE, TK_THEN},
{TK_CASE, TK_PAREN_CLOSE}, {TK_CASE, TK_PAREN_CLOSE},
{TK_CASE, TK_WHILE}, {TK_CASE, TK_WHILE},
{TK_CASE, FUNC_NAME},
{TK_CASE, TK_UNTIL}, {TK_CASE, TK_UNTIL},
{TK_CASE, TK_IF}, {TK_CASE, TK_IF},
{TK_CASE, TK_ELIF}, {TK_CASE, TK_ELIF},
@ -285,6 +287,7 @@ t_stackmatch g_stackmatch[] =
{TK_WHILE, TK_DO}, {TK_WHILE, TK_DO},
{TK_WHILE, TK_PAREN_CLOSE}, {TK_WHILE, TK_PAREN_CLOSE},
{TK_WHILE, TK_WHILE}, {TK_WHILE, TK_WHILE},
{TK_WHILE, FUNC_NAME},
{TK_WHILE, COMPOUND_LIST}, {TK_WHILE, COMPOUND_LIST},
{TK_WHILE, CASE_LIST_NS}, {TK_WHILE, CASE_LIST_NS},
{TK_WHILE, TK_IF}, {TK_WHILE, TK_IF},
@ -306,6 +309,7 @@ t_stackmatch g_stackmatch[] =
{TK_UNTIL, TK_DO}, {TK_UNTIL, TK_DO},
{TK_UNTIL, TK_PAREN_CLOSE}, {TK_UNTIL, TK_PAREN_CLOSE},
{TK_UNTIL, TK_WHILE}, {TK_UNTIL, TK_WHILE},
{TK_UNTIL, FUNC_NAME},
{TK_UNTIL, COMPOUND_LIST}, {TK_UNTIL, COMPOUND_LIST},
{TK_UNTIL, CASE_LIST_NS}, {TK_UNTIL, CASE_LIST_NS},
{TK_UNTIL, TK_IF}, {TK_UNTIL, TK_IF},
@ -328,6 +332,7 @@ t_stackmatch g_stackmatch[] =
{TK_FOR, TK_DO}, {TK_FOR, TK_DO},
{TK_FOR, TK_PAREN_CLOSE}, {TK_FOR, TK_PAREN_CLOSE},
{TK_FOR, TK_WHILE}, {TK_FOR, TK_WHILE},
{TK_FOR, FUNC_NAME},
{TK_FOR, COMPOUND_LIST}, {TK_FOR, COMPOUND_LIST},
{TK_FOR, CASE_LIST_NS}, {TK_FOR, CASE_LIST_NS},
{TK_FOR, TK_IF}, {TK_FOR, TK_IF},
@ -347,6 +352,7 @@ t_stackmatch g_stackmatch[] =
// watch ! // watch !
{TK_LBRACE, AND_OR_MAJOR}, {TK_LBRACE, AND_OR_MAJOR},
{TK_LBRACE, TK_WHILE}, {TK_LBRACE, TK_WHILE},
{TK_LBRACE, FUNC_NAME},
{TK_LBRACE, TK_UNTIL}, {TK_LBRACE, TK_UNTIL},
{TK_LBRACE, TK_DO}, {TK_LBRACE, TK_DO},
{TK_LBRACE, TK_PAREN_CLOSE}, {TK_LBRACE, TK_PAREN_CLOSE},
@ -408,9 +414,11 @@ t_stackmatch g_stackmatch[] =
{TK_PAREN_OPEN, SEPARATOR_OP}, {TK_PAREN_OPEN, SEPARATOR_OP},
{TK_PAREN_OPEN, NEWLINE_LIST}, {TK_PAREN_OPEN, NEWLINE_LIST},
{TK_PAREN_OPEN, SEQUENCE}, {TK_PAREN_OPEN, SEQUENCE},
{TK_PAREN_OPEN, FUNC_NAME},
// watch ! // watch !
{TK_PAREN_OPEN, AND_OR_MAJOR}, {TK_PAREN_OPEN, AND_OR_MAJOR},
{TK_PAREN_OPEN, TK_WHILE}, {TK_PAREN_OPEN, TK_WHILE},
{TK_PAREN_OPEN, FUNC_NAME},
{TK_PAREN_OPEN, TK_UNTIL}, {TK_PAREN_OPEN, TK_UNTIL},
{TK_PAREN_OPEN, TK_DO}, {TK_PAREN_OPEN, TK_DO},
{TK_PAREN_OPEN, TK_PAREN_CLOSE}, {TK_PAREN_OPEN, TK_PAREN_CLOSE},
@ -423,6 +431,7 @@ t_stackmatch g_stackmatch[] =
{TK_PAREN_OPEN, COMPLETE_CONDITION}, {TK_PAREN_OPEN, COMPLETE_CONDITION},
{TK_PAREN_OPEN, TK_IN}, {TK_PAREN_OPEN, TK_IN},
{TK_PAREN_OPEN, CMD_SUPERIOR}, {TK_PAREN_OPEN, CMD_SUPERIOR},
{OPEN_FUNC, CMD_SUPERIOR},
{SEQUENTIAL_SEP, NAME}, {SEQUENTIAL_SEP, NAME},
{SEQUENTIAL_SEP, IN}, {SEQUENTIAL_SEP, IN},
{SEQUENTIAL_SEP, WORDLIST}, {SEQUENTIAL_SEP, WORDLIST},
@ -431,7 +440,7 @@ t_stackmatch g_stackmatch[] =
{END_COMMAND, PIPE_SEMI_SEQUENCE}, {END_COMMAND, PIPE_SEMI_SEQUENCE},
{END_COMMAND, AND_OR_MAJOR}, {END_COMMAND, AND_OR_MAJOR},
{END_COMMAND, TK_WHILE}, {END_COMMAND, TK_WHILE},
{END_COMMAND, TK_WHILE}, {END_COMMAND, FUNC_NAME},
{END_COMMAND, TK_UNTIL}, {END_COMMAND, TK_UNTIL},
{END_COMMAND, TK_DO}, {END_COMMAND, TK_DO},
{END_COMMAND, TK_PAREN_CLOSE}, {END_COMMAND, TK_PAREN_CLOSE},
@ -500,6 +509,7 @@ t_stackmatch g_stackmatch[] =
{TK_PAREN_CLOSE, PATTERN}, {TK_PAREN_CLOSE, PATTERN},
{TK_PAREN_CLOSE, COMPOUND_LIST}, {TK_PAREN_CLOSE, COMPOUND_LIST},
{TK_PAREN_CLOSE, FUNC_NAME}, {TK_PAREN_CLOSE, FUNC_NAME},
{TK_PAREN_CLOSE, OPEN_FUNC},
{TK_RBRACE, MATH}, {TK_RBRACE, MATH},
{TK_RBRACE, MATH_PLUS}, {TK_RBRACE, MATH_PLUS},
{TK_RBRACE, TK_SEMI}, {TK_RBRACE, TK_SEMI},
@ -530,6 +540,7 @@ t_stackmatch g_stackmatch[] =
{NEWLINE_LIST, FOR_WORDLIST}, {NEWLINE_LIST, FOR_WORDLIST},
{NEWLINE_LIST, TK_IN}, {NEWLINE_LIST, TK_IN},
{NEWLINE_LIST, TK_WHILE}, {NEWLINE_LIST, TK_WHILE},
{NEWLINE_LIST, FUNC_NAME},
{NEWLINE_LIST, TK_UNTIL}, {NEWLINE_LIST, TK_UNTIL},
{NEWLINE_LIST, TK_IF}, {NEWLINE_LIST, TK_IF},
{NEWLINE_LIST, TK_ELIF}, {NEWLINE_LIST, TK_ELIF},
@ -635,6 +646,7 @@ t_stackmatch g_stackmatch[] =
// watch ! // watch !
{CMD_NAME, AND_OR_MAJOR}, {CMD_NAME, AND_OR_MAJOR},
{CMD_NAME, TK_WHILE}, {CMD_NAME, TK_WHILE},
{CMD_NAME, FUNC_NAME},
{CMD_NAME, TK_UNTIL}, {CMD_NAME, TK_UNTIL},
{CMD_NAME, TK_DO}, {CMD_NAME, TK_DO},
{CMD_NAME, TK_PAREN_CLOSE}, {CMD_NAME, TK_PAREN_CLOSE},
@ -647,6 +659,7 @@ t_stackmatch g_stackmatch[] =
{CMD_NAME, COMPLETE_CONDITION}, {CMD_NAME, COMPLETE_CONDITION},
{CMD_SUPERIOR, TK_WHILE}, {CMD_SUPERIOR, TK_WHILE},
{CMD_SUPERIOR, FUNC_NAME},
{CMD_SUPERIOR, TK_UNTIL}, {CMD_SUPERIOR, TK_UNTIL},
{CMD_SUPERIOR, TK_DO}, {CMD_SUPERIOR, TK_DO},
{CMD_SUPERIOR, TK_PAREN_CLOSE}, {CMD_SUPERIOR, TK_PAREN_CLOSE},
@ -669,6 +682,8 @@ t_stackmatch g_stackmatch[] =
// watch ! // watch !
{CMD_SUPERIOR, AND_OR_MAJOR}, {CMD_SUPERIOR, AND_OR_MAJOR},
{CLOSE_FUNC, CMD_SUPERIOR},
{CLOSE_FUNC, OPEN_FUNC},
{MATH, LINEBREAK}, {MATH, LINEBREAK},
{MATH, NEWLINE_LIST}, {MATH, NEWLINE_LIST},
{MATH, SEPARATOR}, {MATH, SEPARATOR},
@ -708,6 +723,7 @@ t_stackmatch g_stackmatch[] =
{DO_GROUP, NAME}, {DO_GROUP, NAME},
{DO_GROUP, SEQUENTIAL_SEP}, {DO_GROUP, SEQUENTIAL_SEP},
{LOOP, TK_WHILE}, {LOOP, TK_WHILE},
{LOOP, FUNC_NAME},
{LOOP, TK_UNTIL}, {LOOP, TK_UNTIL},
{CONDITION, LINEBREAK}, {CONDITION, LINEBREAK},
{CONDITION, TK_PAREN_OPEN}, {CONDITION, TK_PAREN_OPEN},
@ -761,6 +777,7 @@ t_stackmatch g_stackmatch[] =
{UNTIL_CLAUSE, TK_DO}, {UNTIL_CLAUSE, TK_DO},
{UNTIL_CLAUSE, TK_PAREN_CLOSE}, {UNTIL_CLAUSE, TK_PAREN_CLOSE},
{UNTIL_CLAUSE, TK_WHILE}, {UNTIL_CLAUSE, TK_WHILE},
{UNTIL_CLAUSE, FUNC_NAME},
{UNTIL_CLAUSE, TK_UNTIL}, {UNTIL_CLAUSE, TK_UNTIL},
{UNTIL_CLAUSE, TK_IF}, {UNTIL_CLAUSE, TK_IF},
{UNTIL_CLAUSE, TK_ELIF}, {UNTIL_CLAUSE, TK_ELIF},
@ -780,6 +797,7 @@ t_stackmatch g_stackmatch[] =
{WHILE_CLAUSE, TK_DO}, {WHILE_CLAUSE, TK_DO},
{WHILE_CLAUSE, TK_PAREN_CLOSE}, {WHILE_CLAUSE, TK_PAREN_CLOSE},
{WHILE_CLAUSE, TK_WHILE}, {WHILE_CLAUSE, TK_WHILE},
{WHILE_CLAUSE, FUNC_NAME},
{WHILE_CLAUSE, TK_UNTIL}, {WHILE_CLAUSE, TK_UNTIL},
{WHILE_CLAUSE, TK_IF}, {WHILE_CLAUSE, TK_IF},
{WHILE_CLAUSE, TK_ELIF}, {WHILE_CLAUSE, TK_ELIF},
@ -804,6 +822,7 @@ t_stackmatch g_stackmatch[] =
{IF_CLAUSE, TK_DO}, {IF_CLAUSE, TK_DO},
{IF_CLAUSE, TK_PAREN_CLOSE}, {IF_CLAUSE, TK_PAREN_CLOSE},
{IF_CLAUSE, TK_WHILE}, {IF_CLAUSE, TK_WHILE},
{IF_CLAUSE, FUNC_NAME},
{IF_CLAUSE, TK_UNTIL}, {IF_CLAUSE, TK_UNTIL},
{IF_CLAUSE, TK_IF}, {IF_CLAUSE, TK_IF},
{IF_CLAUSE, TK_ELIF}, {IF_CLAUSE, TK_ELIF},
@ -827,6 +846,7 @@ t_stackmatch g_stackmatch[] =
{BRACE_CLAUSE, TK_DO}, {BRACE_CLAUSE, TK_DO},
{BRACE_CLAUSE, TK_PAREN_CLOSE}, {BRACE_CLAUSE, TK_PAREN_CLOSE},
{BRACE_CLAUSE, TK_WHILE}, {BRACE_CLAUSE, TK_WHILE},
{BRACE_CLAUSE, FUNC_NAME},
{BRACE_CLAUSE, TK_UNTIL}, {BRACE_CLAUSE, TK_UNTIL},
{BRACE_CLAUSE, TK_IF}, {BRACE_CLAUSE, TK_IF},
{BRACE_CLAUSE, TK_ELIF}, {BRACE_CLAUSE, TK_ELIF},
@ -856,6 +876,7 @@ t_stackmatch g_stackmatch[] =
{CASE_CLAUSE, CASE_LIST_NS}, {CASE_CLAUSE, CASE_LIST_NS},
{CASE_CLAUSE, TK_DO}, {CASE_CLAUSE, TK_DO},
{CASE_CLAUSE, TK_WHILE}, {CASE_CLAUSE, TK_WHILE},
{CASE_CLAUSE, FUNC_NAME},
{CASE_CLAUSE, TK_UNTIL}, {CASE_CLAUSE, TK_UNTIL},
{CASE_CLAUSE, TK_IF}, {CASE_CLAUSE, TK_IF},
{CASE_CLAUSE, TK_ELIF}, {CASE_CLAUSE, TK_ELIF},
@ -882,6 +903,7 @@ t_stackmatch g_stackmatch[] =
{FOR_CLAUSE, TK_DO}, {FOR_CLAUSE, TK_DO},
{FOR_CLAUSE, TK_PAREN_CLOSE}, {FOR_CLAUSE, TK_PAREN_CLOSE},
{FOR_CLAUSE, TK_WHILE}, {FOR_CLAUSE, TK_WHILE},
{FOR_CLAUSE, FUNC_NAME},
{FOR_CLAUSE, TK_UNTIL}, {FOR_CLAUSE, TK_UNTIL},
{FOR_CLAUSE, TK_IF}, {FOR_CLAUSE, TK_IF},
{FOR_CLAUSE, TK_ELIF}, {FOR_CLAUSE, TK_ELIF},
@ -895,6 +917,7 @@ t_stackmatch g_stackmatch[] =
{COMPOUND_LIST, TK_PAREN_CLOSE}, {COMPOUND_LIST, TK_PAREN_CLOSE},
{COMPOUND_LIST, TK_LBRACE}, {COMPOUND_LIST, TK_LBRACE},
{COMPOUND_LIST, TK_WHILE}, {COMPOUND_LIST, TK_WHILE},
{COMPOUND_LIST, FUNC_NAME},
{COMPOUND_LIST, TK_UNTIL}, {COMPOUND_LIST, TK_UNTIL},
{COMPOUND_LIST, TK_ELIF}, {COMPOUND_LIST, TK_ELIF},
{COMPOUND_LIST, TK_ELSE}, {COMPOUND_LIST, TK_ELSE},
@ -917,6 +940,7 @@ t_stackmatch g_stackmatch[] =
{SUBSHELL, TK_DO}, {SUBSHELL, TK_DO},
{SUBSHELL, TK_PAREN_CLOSE}, {SUBSHELL, TK_PAREN_CLOSE},
{SUBSHELL, TK_WHILE}, {SUBSHELL, TK_WHILE},
{SUBSHELL, FUNC_NAME},
{SUBSHELL, TK_UNTIL}, {SUBSHELL, TK_UNTIL},
{SUBSHELL, TK_IF}, {SUBSHELL, TK_IF},
{SUBSHELL, TK_ELIF}, {SUBSHELL, TK_ELIF},
@ -939,6 +963,7 @@ t_stackmatch g_stackmatch[] =
{COMPOUND_COMMAND, TK_DO}, {COMPOUND_COMMAND, TK_DO},
{COMPOUND_COMMAND, TK_PAREN_CLOSE}, {COMPOUND_COMMAND, TK_PAREN_CLOSE},
{COMPOUND_COMMAND, TK_WHILE}, {COMPOUND_COMMAND, TK_WHILE},
{COMPOUND_COMMAND, FUNC_NAME},
{COMPOUND_COMMAND, TK_UNTIL}, {COMPOUND_COMMAND, TK_UNTIL},
{COMPOUND_COMMAND, TK_IF}, {COMPOUND_COMMAND, TK_IF},
{COMPOUND_COMMAND, TK_ELIF}, {COMPOUND_COMMAND, TK_ELIF},
@ -978,6 +1003,7 @@ t_stackmatch g_stackmatch[] =
{AND_OR_MINOR, COMPLETE_COMMANDS}, {AND_OR_MINOR, COMPLETE_COMMANDS},
{AND_OR_MINOR, AND_OR_MAJOR}, {AND_OR_MINOR, AND_OR_MAJOR},
{PIPE_SEQUENCE, TK_WHILE}, {PIPE_SEQUENCE, TK_WHILE},
{PIPE_SEQUENCE, FUNC_NAME},
{PIPE_SEQUENCE, TK_UNTIL}, {PIPE_SEQUENCE, TK_UNTIL},
{PIPE_SEQUENCE, TK_DO}, {PIPE_SEQUENCE, TK_DO},
{PIPE_SEQUENCE, TK_PAREN_CLOSE}, {PIPE_SEQUENCE, TK_PAREN_CLOSE},

View file

@ -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/03/08 17:39:50 by ariard ### ########.fr */ /* Updated: 2017/03/09 15:25:25 by ariard ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -14,6 +14,10 @@
char *read_state(t_sym current) char *read_state(t_sym current)
{ {
if (current == OPEN_FUNC)
return ("OPEN_FUNC");
if (current == CLOSE_FUNC)
return ("CLOSE_FUNC");
if (current == HEREDOCDATA) if (current == HEREDOCDATA)
return ("HEREDOCDATA"); return ("HEREDOCDATA");
if (current == TERMINUS) if (current == TERMINUS)