Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yabtaour
GitHub Repository: yabtaour/Minishell-42
Path: blob/main/lexer/lexer.c
1407 views
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* lexer.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: ssabbaji <[email protected]> +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2022/07/26 18:16:51 by yabtaour #+# #+# */
9
/* Updated: 2022/09/05 13:29:07 by ssabbaji ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
13
#include "../minishell.h"
14
15
int ft_isspace(char c)
16
{
17
if (c == '\t' || c == '\n'
18
|| c == '\r' || c == '\v'
19
|| c == ' ' || c == '\f')
20
return (1);
21
return (0);
22
}
23
24
void ft_lexer(t_data *data)
25
{
26
int i;
27
28
i = 0;
29
data->cmd = ft_strtrim(data->cmd, " ");
30
add_history(data->cmd);
31
while (data->cmd[i])
32
{
33
while (ft_isspace(data->cmd[i]))
34
i++;
35
if (data->cmd[i] != '&' && data->cmd[i] != '|'
36
&& !ft_is_redirection(data->cmd[i]))
37
i = ft_add_word(data, i);
38
if (ft_is_redirection(data->cmd[i]))
39
i = ft_add_redirection(data, i);
40
if (data->cmd[i] == '&')
41
i = ft_add_and(data, i);
42
if (data->cmd[i] == '|')
43
i = ft_add_pipe(data, i);
44
if (ft_is_parenth(data->cmd[i]))
45
i = ft_add_parenth(data, i);
46
if (data->cmd[i] == ';')
47
i = ft_add_semi(data, i);
48
}
49
free(data->cmd);
50
}
51
52