mirror of
https://github.com/KeyZox71/ft_minipowershell.git
synced 2025-03-15 11:26:51 +01:00
「✨」 feat: Tokenizer working
This commit is contained in:
36
src/parsing/tokenizer/__to_redir.c
Normal file
36
src/parsing/tokenizer/__to_redir.c
Normal 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);
|
||||||
|
}
|
26
src/parsing/tokenizer/__to_redir_sign.c
Normal file
26
src/parsing/tokenizer/__to_redir_sign.c
Normal 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);
|
||||||
|
}
|
@ -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);
|
||||||
}*/
|
}
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user