From 043b0247b8cec1aa13129c34dd0457fb88e4f634 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Fri, 17 Mar 2017 21:02:13 +0100 Subject: [PATCH] token and ast not in data_singleton() --- 42sh/Makefile | 1 - 42sh/includes/minishell.h | 4 +--- 42sh/src/lexer/lexer_backslash.c | 2 +- 42sh/src/lexer/lexer_bquote.c | 2 +- 42sh/src/main/data_init.c | 4 +--- 42sh/src/main/main.c | 36 ++++++++++++++++++-------------- 6 files changed, 24 insertions(+), 25 deletions(-) diff --git a/42sh/Makefile b/42sh/Makefile index 98dd358c..0e4a1bed 100644 --- a/42sh/Makefile +++ b/42sh/Makefile @@ -214,7 +214,6 @@ lexer/get_reserved_words.c\ lexer/get_state_global.c\ lexer/get_state_redir.c\ lexer/insert_newline.c\ -lexer/lexer_assignement_word.c\ lexer/lexer_backslash.c\ lexer/lexer_bquote.c\ lexer/lexer_curly_braces.c\ diff --git a/42sh/includes/minishell.h b/42sh/includes/minishell.h index eaeb4c37..7c408f3a 100644 --- a/42sh/includes/minishell.h +++ b/42sh/includes/minishell.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 13:07:44 by jhalford #+# #+# */ -/* Updated: 2017/03/17 00:20:53 by ariard ### ########.fr */ +/* Updated: 2017/03/17 20:52:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -45,8 +45,6 @@ struct s_data int argc; char **argv; t_line line; - t_list *token; - t_btree *ast; t_lexer lexer; t_parser parser; t_comp *comp; diff --git a/42sh/src/lexer/lexer_backslash.c b/42sh/src/lexer/lexer_backslash.c index e998f5a0..36af22c4 100644 --- a/42sh/src/lexer/lexer_backslash.c +++ b/42sh/src/lexer/lexer_backslash.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 11:56:49 by jhalford #+# #+# */ -/* Updated: 2017/03/17 20:17:41 by jhalford ### ########.fr */ +/* Updated: 2017/03/17 21:01:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_bquote.c b/42sh/src/lexer/lexer_bquote.c index b7236305..084db882 100644 --- a/42sh/src/lexer/lexer_bquote.c +++ b/42sh/src/lexer/lexer_bquote.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 22:03:48 by jhalford #+# #+# */ -/* Updated: 2017/03/17 20:07:57 by jhalford ### ########.fr */ +/* Updated: 2017/03/17 21:01:50 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/main/data_init.c b/42sh/src/main/data_init.c index cae2ce88..77ac8219 100644 --- a/42sh/src/main/data_init.c +++ b/42sh/src/main/data_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/28 19:26:32 by jhalford #+# #+# */ -/* Updated: 2017/03/17 17:41:33 by gwojda ### ########.fr */ +/* Updated: 2017/03/17 20:51:06 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,8 +38,6 @@ int data_init(int ac, char **av) data->opts = 0; exec_reset(); data->lst_func = NULL; - data->token = NULL; - data->ast = NULL; lexer_init(&data->lexer); parser_init(&data->parser); if ((term_name = ft_getenv(data->env, "TERM")) == NULL) diff --git a/42sh/src/main/main.c b/42sh/src/main/main.c index 517989d3..7327654b 100644 --- a/42sh/src/main/main.c +++ b/42sh/src/main/main.c @@ -28,7 +28,7 @@ static int do_readline_routine(char **stream) return (ret); } -static int do_lexer_routine(char *stream) +static int do_lexer_routine(t_list **token, char *stream) { t_list *ltoken; t_data *data; @@ -42,8 +42,8 @@ static int do_lexer_routine(char *stream) ft_strappend(&data->lexer.str, stream); if (get_lexer_stack(data->lexer) == BACKSLASH) pop(&data->lexer.stack); - ltoken = ft_lstlast(data->token); - if (lexer_lex(data->token ? <oken : &data->token, &data->lexer) < 0) + ltoken = ft_lstlast(*token); + if (lexer_lex(*token ? <oken : token, &data->lexer) < 0) exit(1); if (get_lexer_stack(data->lexer) > 2) return (1); @@ -51,24 +51,24 @@ static int do_lexer_routine(char *stream) return (0); } -static int do_parser_routine(void) +static int do_parser_routine(t_list **token, t_btree **ast) { t_data *data; data = data_singleton(); - if (get_reserved_words(data->token)) + if (get_reserved_words(*token)) return (1); - if (insert_newline(&data->token)) + if (insert_newline(token)) return (1); if (data->parser.state == SUCCESS && stack_init(&data->parser)) exit(1); - if (ft_parse(&data->ast, &data->token, &data->parser)) + if (ft_parse(ast, token, &data->parser)) exit(1); if ((data->lexer.state = data->parser.heredoc_queue ? HEREDOC : DEFAULT)) return (0); if (data->parser.state == ERROR) { - error_syntax(&data->token); + error_syntax(token); return (1); } else if (data->parser.state == SUCCESS) @@ -76,7 +76,7 @@ static int do_parser_routine(void) return (0); } -static int handle_instruction() +static int handle_instruction(t_list **token, t_btree **ast) { int ret; char *stream; @@ -88,14 +88,14 @@ static int handle_instruction() { if ((ret = do_readline_routine(&stream)) > 0) return (ret); - if (do_lexer_routine(stream) > 0) + if (do_lexer_routine(token, stream) > 0) continue ; - token_print(data->token); - if (do_parser_routine() > 0) + token_print(*token); + if (do_parser_routine(token, ast) > 0) break ; } /* btree_print(STDBUG, ast, &ft_putast); */ - if (data->parser.state == SUCCESS && ft_exec(&data->ast) < 0) + if (data->parser.state == SUCCESS && ft_exec(ast) < 0) exit(1); if (SH_IS_INTERACTIVE(data->opts) && data->lexer.str) ft_add_str_in_history(data->lexer.str); @@ -106,6 +106,8 @@ int main(int ac, char **av) { int ret; t_data *data; + t_list *token; + t_btree *ast; g_argv = av; setlocale(LC_ALL, ""); @@ -113,14 +115,16 @@ int main(int ac, char **av) if (shell_init(ac, av)) return (1); DG("JOBC is %s", SH_HAS_JOBC(data_singleton()->opts)?"ON":"OFF"); + token = NULL; + ast = NULL; data = data_singleton(); while (1) { - ret = handle_instruction(); + ret = handle_instruction(&token, &ast); lexer_destroy(&data->lexer); parser_destroy(&data->parser); - ft_lstdel(&data->token, &ft_lst_cfree); - btree_del(&data->ast, &ft_lst_cfree); + ft_lstdel(&token, &token_free); + btree_del(&ast, &ast_free); if (ret == 1) break ; }