」 feat: Tokenizer working

This commit is contained in:
2024-05-26 18:01:33 +02:00
parent 1388f2ee43
commit 0b81369a9f
4 changed files with 99 additions and 42 deletions

View File

@ -0,0 +1,36 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* __to_redir.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/25 15:06:15 by adjoly #+# #+# */
/* Updated: 2024/05/26 16:39:27 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "tokenizer.h"
t_redirection *__to_redir(char *redir_s)
{
t_redirection *redir;
char *tmp;
redir = ft_calloc(sizeof(t_redirection), 1);
redir->sign = __to_redir_sign(redir_s);
if (redir->sign == HEREDOC || redir->sign == OUT_APPEND)
redir_s += 2;
else
redir_s++;
while (*redir_s && *redir_s == ' ')
redir_s++;
tmp = redir_s;
while (*tmp && ft_isalnum(*tmp))
tmp++;
redir->file_name = ft_calloc(tmp - redir_s + 1, sizeof(char));
ft_strlcpy(redir->file_name, redir_s, tmp - redir_s + 1);
if (redir->sign != HEREDOC)
redir_s += (tmp - redir_s);
return (redir);
}

View File

@ -0,0 +1,26 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* __to_redir_sign.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/25 15:06:40 by adjoly #+# #+# */
/* Updated: 2024/05/25 15:06:49 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "tokenizer.h"
t_redirection_sign __to_redir_sign(char *redir_sign)
{
if (redir_sign[0] == '<' && redir_sign[1] != '<')
return (INFILE);
else if (redir_sign[0] == '<' && redir_sign[1] == '<')
return (HEREDOC);
else if (redir_sign[0] == '>' && redir_sign[1] == '>')
return (OUT_APPEND);
else if (redir_sign[0] == '>' && redir_sign[1] != '>')
return (OUTFILE);
return (0);
}

View File

@ -6,67 +6,57 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 21:05:04 by adjoly #+# #+# */
/* Updated: 2024/05/25 14:05:02 by adjoly ### ########.fr */
/* Updated: 2024/05/26 17:39:37 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "tokenizer.h"
#include "parsing.h"
t_redirection_sign __to_redir_sign(char *redir_sign)
size_t __get_sizeof_redir(char *redir_s, t_redirection *redir)
{
if (redir_sign[0] == '<' && redir_sign[1] != '<')
return (INFILE);
else if (redir_sign[0] == '<' && redir_sign[1] == '<')
return (HEREDOC);
else if (redir_sign[0] == '>' && redir_sign[1] == '>')
return (OUT_APPEND);
else if (redir_sign[0] == '>' && redir_sign[1] != '>')
return (OUTFILE);
return (0);
}
size_t i;
char *tmp;
t_redirection *__to_redir(char *redir_s)
{
t_redirection *redir;
char *tmp;
redir = ft_calloc(sizeof(t_redirection), 1);
redir->sign = __to_redir_sign(redir_s);
if (redir->sign == HEREDOC || redir->sign == OUT_APPEND)
redir_s += 2;
if (!redir_s || !redir)
return (0);
if (redir->sign == HEREDOC)
return (1);
else if (redir->sign == OUT_APPEND)
i = 1;
else
redir_s++;
while (*redir_s && *redir_s == ' ')
redir_s++;
i = 0;
if (!redir->file_name)
return (i);
tmp = redir_s;
while (*tmp && ft_isalnum(*tmp))
tmp++;
redir->file_name = ft_calloc(tmp - redir_s + 1, sizeof(char));
ft_strlcpy(redir->file_name, redir_s, tmp - redir_s + 1);
return (redir);
if (!i)
i++;
if (*tmp && *tmp == ' ')
i++;
i += ft_strlen(redir->file_name);
return (i);
}
/*t_token *__to_token(char *cmd)
t_token *__to_token(char *cmd)
{
char *tmp;
t_token *token;
t_redirection *tmp_redir;
char *argv;
char *tmp;
tmp = cmd;
argv = NULL;
token = ft_calloc(sizeof(t_token), 1);
token->argv = ft_calloc(sizeof(t_token), 1);
tmp = cmd;
while (*tmp)
{
if (*tmp == '<' || *tmp == '>')
{
tmp_redir = __to_redir(tmp);
ft_lstadd_back(&(token->redirection), ft_lstnew((void *)&tmp_redir));
ft_lstadd_back(&(token->redirection), ft_lstnew((void*)tmp_redir));
tmp += __get_sizeof_redir(tmp, tmp_redir);
}
else
ft_strjoin_free_s1(argv, &(*tmp));
token->argv = ft_strjoin(token->argv, ft_substr(tmp, 0, 1));
tmp++;
}
return (token);
}*/
}

View File

@ -6,20 +6,25 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/18 20:13:50 by adjoly #+# #+# */
/* Updated: 2024/05/20 22:51:45 by adjoly ### ########.fr */
/* Updated: 2024/05/26 17:59:27 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "tokenizer.h"
/*t_list *tokenizer(char *readline)
t_list *tokenizer(char *readline)
{
t_list *token;
t_list *piped;
t_list *tmp;
piped = __split_pipe(readline);
while (piped && *piped)
token = NULL;
tmp = piped;
while (tmp)
{
ft_lstadd_back(&token, ft_lstnew((void*)__to_token(tmp->content)));
tmp = tmp->next;
}
}*/
return (token);
}