correction grammar + bug func declaration + error syntax better
This commit is contained in:
parent
6660c5ed2c
commit
5590af97a4
8 changed files with 55 additions and 18 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
hello () (
|
hello() (
|
||||||
echo HELLO
|
echo HELLO
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
;
|
;
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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},
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue