」 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> +#+ +:+ +#+ */ /* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 21:05:04 by adjoly #+# #+# */ /* 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 "tokenizer.h"
#include "parsing.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] != '<') size_t i;
return (INFILE); char *tmp;
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);
}
t_redirection *__to_redir(char *redir_s) if (!redir_s || !redir)
{ return (0);
t_redirection *redir; if (redir->sign == HEREDOC)
char *tmp; return (1);
else if (redir->sign == OUT_APPEND)
redir = ft_calloc(sizeof(t_redirection), 1); i = 1;
redir->sign = __to_redir_sign(redir_s);
if (redir->sign == HEREDOC || redir->sign == OUT_APPEND)
redir_s += 2;
else else
redir_s++; i = 0;
while (*redir_s && *redir_s == ' ') if (!redir->file_name)
redir_s++; return (i);
tmp = redir_s; tmp = redir_s;
while (*tmp && ft_isalnum(*tmp)) if (!i)
tmp++; i++;
redir->file_name = ft_calloc(tmp - redir_s + 1, sizeof(char)); if (*tmp && *tmp == ' ')
ft_strlcpy(redir->file_name, redir_s, tmp - redir_s + 1); i++;
return (redir); 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_token *token;
t_redirection *tmp_redir; t_redirection *tmp_redir;
char *argv; char *tmp;
tmp = cmd;
argv = NULL;
token = ft_calloc(sizeof(t_token), 1); token = ft_calloc(sizeof(t_token), 1);
token->argv = ft_calloc(sizeof(t_token), 1);
tmp = cmd;
while (*tmp) while (*tmp)
{ {
if (*tmp == '<' || *tmp == '>') if (*tmp == '<' || *tmp == '>')
{ {
tmp_redir = __to_redir(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 else
ft_strjoin_free_s1(argv, &(*tmp)); token->argv = ft_strjoin(token->argv, ft_substr(tmp, 0, 1));
tmp++; tmp++;
} }
return (token); return (token);
}*/ }

View File

@ -6,20 +6,25 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */ /* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/18 20:13:50 by adjoly #+# #+# */ /* 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" #include "tokenizer.h"
/*t_list *tokenizer(char *readline) t_list *tokenizer(char *readline)
{ {
t_list *token; t_list *token;
t_list *piped; t_list *piped;
t_list *tmp;
piped = __split_pipe(readline); 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);
}