aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lexer/lexer.c15
-rw-r--r--src/main.c11
-rw-r--r--src/parser/parser.c7
-rw-r--r--src/utils.c13
4 files changed, 21 insertions, 25 deletions
diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c
index 466e360..9b947f4 100644
--- a/src/lexer/lexer.c
+++ b/src/lexer/lexer.c
@@ -6,7 +6,7 @@
/* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/07/16 08:18:25 by nahaddac #+# #+# */
-/* Updated: 2020/10/08 09:21:55 by cacharle ### ########.fr */
+/* Updated: 2020/10/09 12:29:32 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -108,22 +108,9 @@ t_tok_lst *create_token_list(char *input, t_tok_lst **lst)
int lexer(char *input, t_tok_lst **out)
{
int status;
- /* t_tok_lst *curr; */
- if (!input)
- return (2);
*out = NULL;
*out = create_token_list(input, out);
status = lexer_trim(*out);
- /* curr = *out; */
- /* while (curr != NULL) */
- /* { */
- /* if (!(curr->tag & TAG_IS_STR)) */
- /* { */
- /* free(curr->content); */
- /* curr->content = NULL; */
- /* } */
- /* curr = curr->next; */
- /* } */
return (status);
}
diff --git a/src/main.c b/src/main.c
index f484e91..0e1b29d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */
-/* Updated: 2020/10/09 09:39:22 by cacharle ### ########.fr */
+/* Updated: 2020/10/09 12:39:36 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -23,13 +23,6 @@
int debug_lexer(char *input);
int debug_parser(char *input);
-/*
-** TODO
-** signal whole line
-** path optimisation on command not found
-** path tricks
-*/
-
t_state g_state;
int execute(t_env env, char *input)
@@ -39,6 +32,8 @@ int execute(t_env env, char *input)
t_parsed *parser_out;
int fds[2];
+ if (utils_strisblank(input))
+ return (0);
status = lexer(input, &lexer_out);
if (status != 0)
{
diff --git a/src/parser/parser.c b/src/parser/parser.c
index e861232..9d5a99d 100644
--- a/src/parser/parser.c
+++ b/src/parser/parser.c
@@ -6,7 +6,7 @@
/* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/06/17 18:09:04 by nahaddac #+# #+# */
-/* Updated: 2020/10/09 11:10:55 by cacharle ### ########.fr */
+/* Updated: 2020/10/09 12:35:51 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -107,7 +107,6 @@ t_parsed *parse_pipeline(t_tok_lst *input)
{
ast_destroy(expr->ast);
free(expr);
- /* tok_lst_destroy(expr->rest, free); */
return (parsed_error("syntax error expected token"));
}
tail = parse_pipeline(expr->rest);
@@ -211,7 +210,11 @@ t_parsed *parse_expr(t_tok_lst *input)
return (parsed);
input = parsed->rest;
if (input == NULL || !(input->tag & TAG_PARENT_CLOSE))
+ {
+ ast_destroy(parsed->ast);
+ free(parsed);
return (parsed_error("syntax error expected token"));
+ }
tok_lst_pop_front(&input, free);
if ((ast = ast_new(AST_PARENT)) == NULL)
return (NULL);
diff --git a/src/utils.c b/src/utils.c
index b733172..2fffe45 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -6,7 +6,7 @@
/* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/28 11:56:31 by cacharle #+# #+# */
-/* Updated: 2020/10/09 08:11:23 by cacharle ### ########.fr */
+/* Updated: 2020/10/09 12:40:51 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -47,3 +47,14 @@ void exit_if(bool predicate)
ft_putendl_fd("minishell: fatal error", STDERR_FILENO);
exit(3);
}
+
+bool utils_strisblank(char *str)
+{
+ while (*str != '\0')
+ {
+ if (!ft_isblank(*str))
+ return (false);
+ str++;
+ }
+ return (true);
+}