From 4ef7af6e2066bbe7476f5c5e05d3a6eaa678d141 Mon Sep 17 00:00:00 2001 From: "ariard@student.42.fr" Date: Fri, 17 Feb 2017 19:49:12 +0100 Subject: [PATCH] while error check doing --- 42sh/includes/.parser.h.swn | Bin 16384 -> 0 bytes 42sh/includes/parser.h | 2 +- 42sh/sample/while.sh | 29 +----------------- 42sh/sample/yale1.sh | 2 +- 42sh/src/lexer/ft_lexer.c | 6 ++-- 42sh/src/lexer/ft_post_tokenize.c | 11 +++---- 42sh/src/lexer/ft_tokenize.c | 2 +- 42sh/src/lexer/get_reserved_words.c | 4 +-- 42sh/src/main/shell_script.c | 2 +- 42sh/src/parser/.eval_sym.c.swn | Bin 0 -> 28672 bytes 42sh/src/parser/.read_stack.c.swn | Bin 0 -> 20480 bytes 42sh/src/parser/add_cmd.c | 2 +- 42sh/src/parser/add_file.c | 2 +- 42sh/src/parser/aggregate_sym.c | 37 +++++++++++++++-------- 42sh/src/parser/build_tree.c | 6 ++-- 42sh/src/parser/eval_sym.c | 22 ++++++++++++-- 42sh/src/parser/ft_parse.c | 28 ++++++++++++++---- 42sh/src/parser/produce_sym.c | 9 +++++- 42sh/src/parser/read_stack.c | 44 +++++++++++++++------------- 42sh/src/parser/tree_wrapper.c | 2 +- 42sh/test.sh | 1 + 21 files changed, 121 insertions(+), 90 deletions(-) delete mode 100644 42sh/includes/.parser.h.swn create mode 100644 42sh/src/parser/.eval_sym.c.swn create mode 100644 42sh/src/parser/.read_stack.c.swn diff --git a/42sh/includes/.parser.h.swn b/42sh/includes/.parser.h.swn deleted file mode 100644 index 8b6d42c56e08e458f16249d4b76e08412a09d8c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 VfykXdqvlrAbq=`oPQ6(({s(~*FP8uS diff --git a/42sh/includes/parser.h b/42sh/includes/parser.h index 2d66ee99..d40032d1 100644 --- a/42sh/includes/parser.h +++ b/42sh/includes/parser.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/sample/while.sh b/42sh/sample/while.sh index 4dd61c2f..fe11d2e0 100644 --- a/42sh/sample/while.sh +++ b/42sh/sample/while.sh @@ -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 diff --git a/42sh/sample/yale1.sh b/42sh/sample/yale1.sh index 05752234..8b137891 100644 --- a/42sh/sample/yale1.sh +++ b/42sh/sample/yale1.sh @@ -1 +1 @@ -< file1 ls | cat | cat | ls > file2 + diff --git a/42sh/src/lexer/ft_lexer.c b/42sh/src/lexer/ft_lexer.c index 2063e7dd..54c390d0 100644 --- a/42sh/src/lexer/ft_lexer.c +++ b/42sh/src/lexer/ft_lexer.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); } diff --git a/42sh/src/lexer/ft_post_tokenize.c b/42sh/src/lexer/ft_post_tokenize.c index f951fe2b..dfb0b406 100644 --- a/42sh/src/lexer/ft_post_tokenize.c +++ b/42sh/src/lexer/ft_post_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); } diff --git a/42sh/src/lexer/ft_tokenize.c b/42sh/src/lexer/ft_tokenize.c index 26b35eca..54b6a9cc 100644 --- a/42sh/src/lexer/ft_tokenize.c +++ b/42sh/src/lexer/ft_tokenize.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/get_reserved_words.c b/42sh/src/lexer/get_reserved_words.c index 8e05c32c..d09cf09e 100644 --- a/42sh/src/lexer/get_reserved_words.c +++ b/42sh/src/lexer/get_reserved_words.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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)) { diff --git a/42sh/src/main/shell_script.c b/42sh/src/main/shell_script.c index 2d2829b0..d7273002 100644 --- a/42sh/src/main/shell_script.c +++ b/42sh/src/main/shell_script.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/.eval_sym.c.swn b/42sh/src/parser/.eval_sym.c.swn new file mode 100644 index 0000000000000000000000000000000000000000..4e796003c942536ebc1b2c15270f3fc07d31994a GIT binary patch literal 28672 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 +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/add_file.c b/42sh/src/parser/add_file.c index 4eed48cc..1eed2a89 100644 --- a/42sh/src/parser/add_file.c +++ b/42sh/src/parser/add_file.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/parser/aggregate_sym.c b/42sh/src/parser/aggregate_sym.c index 2b1458bc..3f0a83d2 100644 --- a/42sh/src/parser/aggregate_sym.c +++ b/42sh/src/parser/aggregate_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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)); diff --git a/42sh/src/parser/build_tree.c b/42sh/src/parser/build_tree.c index 8d1b1d64..43f5bb4b 100644 --- a/42sh/src/parser/build_tree.c +++ b/42sh/src/parser/build_tree.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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++; diff --git a/42sh/src/parser/eval_sym.c b/42sh/src/parser/eval_sym.c index b27c1418..709f9a91 100644 --- a/42sh/src/parser/eval_sym.c +++ b/42sh/src/parser/eval_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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) { diff --git a/42sh/src/parser/ft_parse.c b/42sh/src/parser/ft_parse.c index d8dc831d..7e00865d 100644 --- a/42sh/src/parser/ft_parse.c +++ b/42sh/src/parser/ft_parse.c @@ -6,20 +6,33 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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); } diff --git a/42sh/src/parser/produce_sym.c b/42sh/src/parser/produce_sym.c index c3405ea6..6b70555f 100644 --- a/42sh/src/parser/produce_sym.c +++ b/42sh/src/parser/produce_sym.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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}, diff --git a/42sh/src/parser/read_stack.c b/42sh/src/parser/read_stack.c index 89f4af57..893f9f94 100644 --- a/42sh/src/parser/read_stack.c +++ b/42sh/src/parser/read_stack.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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"); diff --git a/42sh/src/parser/tree_wrapper.c b/42sh/src/parser/tree_wrapper.c index 0328eae4..56235151 100644 --- a/42sh/src/parser/tree_wrapper.c +++ b/42sh/src/parser/tree_wrapper.c @@ -6,7 +6,7 @@ /* By: ariard +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 */ /* */ /* ************************************************************************** */ diff --git a/42sh/test.sh b/42sh/test.sh index e69de29b..27c1ef0f 100644 --- a/42sh/test.sh +++ b/42sh/test.sh @@ -0,0 +1 @@ +ls |