From 2671bba0a4d647444cdf1ab10aae1a8f8eddcd1b Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Thu, 16 Mar 2017 19:08:21 +0100 Subject: [PATCH] removed lexer_lessand/greatand, some lexer norm --- 42sh/includes/lexer.h | 8 ++----- 42sh/src/exec/process_launch.c | 2 +- 42sh/src/exec/process_redirect.c | 8 +------ 42sh/src/exec/redirect_greatand.c | 2 +- 42sh/src/lexer/lexer_great.c | 10 +++----- 42sh/src/lexer/lexer_greatand.c | 23 ------------------ 42sh/src/lexer/lexer_less.c | 5 ++-- 42sh/src/lexer/lexer_lessand.c | 39 ------------------------------- 42sh/src/lexer/lexer_lex.c | 9 ++++--- 42sh/src/lexer/lexer_number.c | 27 +++++++-------------- 42sh/src/lexer/token_init.c | 6 ++--- 11 files changed, 27 insertions(+), 112 deletions(-) delete mode 100644 42sh/src/lexer/lexer_greatand.c delete mode 100644 42sh/src/lexer/lexer_lessand.c diff --git a/42sh/includes/lexer.h b/42sh/includes/lexer.h index 618939db..025b87f9 100644 --- a/42sh/includes/lexer.h +++ b/42sh/includes/lexer.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/01 12:15:50 by jhalford #+# #+# */ -/* Updated: 2017/03/08 23:20:20 by ariard ### ########.fr */ +/* Updated: 2017/03/16 19:07:42 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,13 +17,11 @@ # include "libft.h" # include "types.h" -//# define TK_REDIR (0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20) -# define TK_NON_FREEABLE (TK_PAREN_OPEN | TK_PAREN_CLOSE | TK_BQUOTE) # define RW_SEP (TK_NEWLINE | TK_AMP | TK_SEMI | TK_WHILE | TK_DONE\ | TK_DO | TK_IF | TK_FI | TK_THEN | TK_ELIF | TK_ELSE) enum e_lexstate { - DEFAULT, //#define DEFAULT 0 + DEFAULT, PAREN, HEREDOC, NEWLINE, @@ -33,8 +31,6 @@ enum e_lexstate NUMBER, LESS, GREAT, - LESSAND, - GREATAND, QUOTE, DQUOTE, BQUOTE, diff --git a/42sh/src/exec/process_launch.c b/42sh/src/exec/process_launch.c index 10ea8de8..b1b4ed6a 100644 --- a/42sh/src/exec/process_launch.c +++ b/42sh/src/exec/process_launch.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/03/13 22:21:19 by jhalford #+# #+# */ -/* Updated: 2017/03/16 18:45:51 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 18:51:31 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/exec/process_redirect.c b/42sh/src/exec/process_redirect.c index fb2c6436..202d324f 100644 --- a/42sh/src/exec/process_redirect.c +++ b/42sh/src/exec/process_redirect.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/29 16:04:18 by jhalford #+# #+# */ -/* Updated: 2017/03/15 18:06:06 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:06:25 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,11 +35,6 @@ int process_redirect(t_process *p) while (redirs) { redir = redirs->content; - /* DG("redirs content : %p", redirs->content); */ - DG("redir @ %p", redir); - DG("redir.type [%li]", redir->type); - DG("redir.word [%s]", redir->word); - DG("redir.n [%i]", redir->n); if (redir->n > 9) return (bad_fd(redir->n)); i = 0; @@ -55,7 +50,6 @@ int process_redirect(t_process *p) } redirs = redirs->next; } - /* DG("redirecting [%i:%i] [%i]", p->fdin, p->fdout, p->to_close); */ if (p->fdin != STDIN) dup2_close(p->fdin, STDIN); if (p->fdout != STDOUT) diff --git a/42sh/src/exec/redirect_greatand.c b/42sh/src/exec/redirect_greatand.c index e42cf7eb..0bd69f59 100644 --- a/42sh/src/exec/redirect_greatand.c +++ b/42sh/src/exec/redirect_greatand.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/06 22:12:31 by jhalford #+# #+# */ -/* Updated: 2017/03/15 17:49:18 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:07:41 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/42sh/src/lexer/lexer_great.c b/42sh/src/lexer/lexer_great.c index d47125f4..404abf86 100644 --- a/42sh/src/lexer/lexer_great.c +++ b/42sh/src/lexer/lexer_great.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:35 by jhalford #+# #+# */ -/* Updated: 2017/03/10 13:11:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:01:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,21 +19,17 @@ int lexer_great(t_list **alst, t_lexer *lexer) token = (*alst)->content; if (token->type) return (lexer_lex(&(*alst)->next, lexer)); - token_append(token, lexer, 0, 0); lexer->pos++; if (lexer->str[lexer->pos] == '&') { - DG("lex greatand"); token->type = TK_GREATAND; - token_append(token, lexer, 0, 0); lexer->pos++; - return (lexer_greatand(alst, lexer)); + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); } if (lexer->str[lexer->pos] == '>') { - DG("lex great"); token->type = TK_DGREAT; - token_append(token, lexer, 0, 0); lexer->pos++; lexer->state = DEFAULT; return (lexer_lex(&(*alst)->next, lexer)); diff --git a/42sh/src/lexer/lexer_greatand.c b/42sh/src/lexer/lexer_greatand.c deleted file mode 100644 index e3bccbe7..00000000 --- a/42sh/src/lexer/lexer_greatand.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_greatand.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/03 11:56:58 by jhalford #+# #+# */ -/* Updated: 2017/03/10 13:45:47 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int lexer_greatand(t_list **alst, t_lexer *lexer) -{ - t_token *token; - - token = (*alst)->content; - token->type = TK_GREATAND; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); -} diff --git a/42sh/src/lexer/lexer_less.c b/42sh/src/lexer/lexer_less.c index 1e8571f1..e5d28d0e 100644 --- a/42sh/src/lexer/lexer_less.c +++ b/42sh/src/lexer/lexer_less.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:53 by jhalford #+# #+# */ -/* Updated: 2017/03/10 13:11:27 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:00:51 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,7 +24,8 @@ int lexer_less(t_list **alst, t_lexer *lexer) { token->type = TK_LESSAND; lexer->pos++; - return (lexer_lessand(alst, lexer)); + lexer->state = DEFAULT; + return (lexer_lex(&(*alst)->next, lexer)); } if (lexer->str[lexer->pos] == '<') { diff --git a/42sh/src/lexer/lexer_lessand.c b/42sh/src/lexer/lexer_lessand.c deleted file mode 100644 index e7769130..00000000 --- a/42sh/src/lexer/lexer_lessand.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* lexer_lessand.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: jhalford +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2016/12/03 11:58:51 by jhalford #+# #+# */ -/* Updated: 2017/03/15 17:48:34 by jhalford ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "minishell.h" - -int lexer_lessand(t_list **alst, t_lexer *lexer) -{ - t_token *token; - - token = (*alst)->content; - token->type = TK_LESSAND; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); -/* if (ft_isdigit(lexer->str[lexer->pos])) - { - token_append(token, lexer, 0, 0); - lexer->pos++; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); - } - else if (lexer->str[lexer->pos] == '-') - { - token_append(token, lexer, 0, 0); - lexer->pos++; - lexer->state = DEFAULT; - return (lexer_lex(&(*alst)->next, lexer)); - } - lexer->state = DEFAULT; - return (lexer_lex(alst, lexer));*/ -} diff --git a/42sh/src/lexer/lexer_lex.c b/42sh/src/lexer/lexer_lex.c index 14faa960..8888d055 100644 --- a/42sh/src/lexer/lexer_lex.c +++ b/42sh/src/lexer/lexer_lex.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2017/02/09 17:08:51 by jhalford #+# #+# */ -/* Updated: 2017/03/13 15:41:30 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:07:45 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,8 +24,6 @@ int (*g_lexer[])(t_list **alst, t_lexer *lexer) = &lexer_number, &lexer_less, &lexer_great, - &lexer_lessand, - &lexer_greatand, &lexer_quote, &lexer_dquote, &lexer_bquote, @@ -57,8 +55,9 @@ int lexer_lex(t_list **alst, t_lexer *lexer) return (lexer_end(alst, lexer)); if (!*alst) { - token = token_init(); - *alst = ft_lstnew(token, sizeof(*token)); + if (!(token = token_init()) + || !(*alst = ft_lstnew(token, sizeof(*token)))) + return (-1); } return ((*g_lexer[lexer->state])(alst, lexer)); } diff --git a/42sh/src/lexer/lexer_number.c b/42sh/src/lexer/lexer_number.c index 80401358..37c669f0 100644 --- a/42sh/src/lexer/lexer_number.c +++ b/42sh/src/lexer/lexer_number.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/12/03 12:06:45 by jhalford #+# #+# */ -/* Updated: 2017/03/11 20:48:19 by ariard ### ########.fr */ +/* Updated: 2017/03/16 18:54:46 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,26 +26,17 @@ int lexer_number(t_list **alst, t_lexer *lexer) return (lexer_lex(alst, lexer)); } else if (ft_isdigit(lexer->str[lexer->pos]) - && ft_isdigit(lexer->str[lexer->pos + 1])) + && (ft_isdigit(lexer->str[lexer->pos + 1]) + || (lexer->str[lexer->pos + 1] == '>' + || lexer->str[lexer->pos + 1] == '<'))) { token_append(token, lexer, 0, 0); lexer->pos++; return (lexer_number(alst, lexer)); } - else if (ft_isdigit(lexer->str[lexer->pos]) - && (lexer->str[lexer->pos + 1] == '>' - || lexer->str[lexer->pos + 1] == '<')) - { - token_append(token, lexer, 0, 0); - lexer->pos++; - return (lexer_lex(alst, lexer)); - } - else - { - token->type = TK_WORD; - lexer->state = DEFAULT; - token_append(token, lexer, 0, 0); - lexer->pos++; - return (lexer_lex(alst, lexer)); - } + token->type = TK_WORD; + lexer->state = DEFAULT; + token_append(token, lexer, 0, 0); + lexer->pos++; + return (lexer_lex(alst, lexer)); } diff --git a/42sh/src/lexer/token_init.c b/42sh/src/lexer/token_init.c index a601f73b..77acdbcc 100644 --- a/42sh/src/lexer/token_init.c +++ b/42sh/src/lexer/token_init.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/10 15:30:25 by jhalford #+# #+# */ -/* Updated: 2017/03/13 15:41:35 by jhalford ### ########.fr */ +/* Updated: 2017/03/16 19:07:52 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,8 +16,8 @@ t_token *token_init(void) { t_token *token; - token = (t_token *)malloc(sizeof(t_token)); -//non protege + if (!(token = (t_token *)malloc(sizeof(t_token)))) + return (NULL); token->type = 0; token->size = 8; token->data = ft_strnew(token->size + 1);