aboutsummaryrefslogtreecommitdiff
path: root/include/lexer.h
blob: e2abe2861d5eaa7d36c7a5fa64532eda971bebc6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef LEXER_H
# define LEXER_H

# include <stdlib.h>
# include "libft_lst.h"
# include "libft_str.h"
# include "minishell.h"

enum                    e_token_tag
{
	TAG_AND          = 1 << 0,
	TAG_END          = 1 << 1,
	TAG_OR           = 1 << 2,
	TAG_PIPE         = 1 << 3,
	TAG_REDIR_IN     = 1 << 4,
	TAG_REDIR_OUT    = 1 << 5,
	TAG_REDIR_APPEND = 1 << 6,
	TAG_PARENT_OPEN  = 1 << 7,
	TAG_PARENT_CLOSE = 1 << 8,
	TAG_STR          = 1 << 9,
	TAG_STR_DOUBLE   = 1 << 10,
	TAG_STR_SINGLE   = 1 << 11,
	TAG_STICK        = 1 << 12,
};

typedef struct
{
    enum e_token_tag    tag;
    char                *content;
}                       t_token;

t_ftlst                 *lexer(char *input);
enum e_token_tag        ret_token(char *input, int  i);
enum e_token_tag        ret_token_sep_redir_append(char *input, int i);

int                     lexer_sep(char input);
int                     lexer_verif_entre_cote(char *input, int i);
int                     lexe_space(char *input);

t_token					*token_new(enum e_token_tag tag, char *content);
void					token_destroy(t_token *token);

#endif