more refactor for parser
This commit is contained in:
parent
e5569d9b0b
commit
4cdc9c3530
@ -16,9 +16,10 @@
|
||||
# include "minishell.h"
|
||||
|
||||
t_command *parser_alloc_command(t_minishell *msh, char *cmd);
|
||||
void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn);
|
||||
char **parser_get_arguments(t_list *list, t_minishell *msh);
|
||||
t_list *parser_get_commands(t_minishell *msh);
|
||||
t_list *parser_get_input_redirects(t_list *list);
|
||||
void parser_create_command(t_minishell *msh, t_command *cmd, t_list **l_tkn);
|
||||
char **parser_get_arguments(t_list *list, t_minishell *msh);
|
||||
int parser_validate_command(t_command *command);
|
||||
|
||||
#endif
|
||||
|
||||
24
sources.mk
Normal file
24
sources.mk
Normal file
@ -0,0 +1,24 @@
|
||||
VPATH = src:src/prompt:src/utils:src/lexer:src/token:src/environment:src/executor:src/parser:src/debug:src/expander:src/builtin:src/signal:src/redirect:
|
||||
SOURCES = history_load.c history_write.c prompt.c print_banner.c check_malloc.c \
|
||||
free_command_list.c free_freelist.c free_lexer.c free_minishell.c \
|
||||
free_safe.c free_token.c free_token_list.c ft_lstclear_safe.c \
|
||||
ft_lstnew_safe.c ft_strdup_safe.c ft_strjoin_safe.c malloc_safe.c \
|
||||
error_msg.c free_minishell_line.c ft_substr_safe.c init_minishell.c \
|
||||
lexer_read_char.c lexer_new.c lexer_parse_input.c lexer_read_word.c \
|
||||
lexer_token_next.c token_new.c token_parse.c environment_add.c \
|
||||
environment_del.c environment_free.c environment_free_list.c \
|
||||
environment_get.c environment_get_arr.c environment_parse.c \
|
||||
environment_print.c executor_close_fds.c executor_absolute_path.c \
|
||||
executor_count_fds.c executor_create_pipes.c \
|
||||
executor_create_redirects.c executor_open_fds.c \
|
||||
executor_execute_pipeline.c executor_fork.c executor_child.c \
|
||||
parser_create_command.c parser_get_arguments.c parser_alloc_command.c \
|
||||
parser_get_commands.c parser_validate_command.c print_commands.c \
|
||||
print_freelist.c expander_is_character.c expander_expand_dollar.c \
|
||||
expander_allocate_memory.c expander_get_variable.c \
|
||||
expander_parse_variables.c expander_parse_string.c is_builtin.c \
|
||||
simple_builtins.c builtin_cd.c builtin_echo.c builtin_env.c \
|
||||
builtin_exit.c builtin_export.c builtin_pwd.c builtin_router.c \
|
||||
builtin_unset.c signal.c signal_init.c.c redirect_get_inputs.c \
|
||||
redirect_get_outputs.c redirect_new.c redirect_new_error.c \
|
||||
redirect_process_heredoc.c redirect_valid_type.c main.c \
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/11 14:06:02 by qmennen #+# #+# */
|
||||
/* Updated: 2025/02/27 13:38:56 by qmennen ### ########.fr */
|
||||
/* Updated: 2025/02/27 16:07:54 by qmennen ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -17,20 +17,6 @@ static int is_command_token(t_token *token)
|
||||
return (token->type < 3 || redirect_token_type(token));
|
||||
}
|
||||
|
||||
static int validate_redirects(t_list *lst)
|
||||
{
|
||||
t_list *token;
|
||||
|
||||
token = lst;
|
||||
while (token)
|
||||
{
|
||||
if (((t_redirect *)token->content)->type == T_ERROR)
|
||||
return (0);
|
||||
token = token->next;
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
t_list *parser_get_commands(t_minishell *msh)
|
||||
{
|
||||
t_list *command_list;
|
||||
@ -47,7 +33,7 @@ t_list *parser_get_commands(t_minishell *msh)
|
||||
token = (t_token *) current->content;
|
||||
command = parser_alloc_command(msh, ft_strdup_safe(msh, token->value));
|
||||
parser_create_command(msh, command, ¤t);
|
||||
if (!validate_redirects(command->redirect_in) || !validate_redirects(command->redirect_out))
|
||||
if (! parser_validate_command(command))
|
||||
break ;
|
||||
ft_lstadd_back(&command_list, ft_lstnew_safe(msh, command));
|
||||
while (current && is_command_token((t_token *)current->content))
|
||||
|
||||
37
src/parser/parser_validate_command.c
Normal file
37
src/parser/parser_validate_command.c
Normal file
@ -0,0 +1,37 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* parser_validate_command.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2025/02/27 16:06:33 by qmennen #+# #+# */
|
||||
/* Updated: 2025/02/27 16:08:49 by qmennen ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
static int validate_redirects(t_list *lst)
|
||||
{
|
||||
t_list *token;
|
||||
|
||||
token = lst;
|
||||
while (token)
|
||||
{
|
||||
if (((t_redirect *)token->content)->type == T_ERROR)
|
||||
return (0);
|
||||
token = token->next;
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
int parser_validate_command(t_command *command)
|
||||
{
|
||||
int r_in;
|
||||
int r_out;
|
||||
|
||||
r_in = validate_redirects(command->redirect_in);
|
||||
r_out = validate_redirects(command->redirect_out);
|
||||
return (r_in && r_out);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user