diff options
| author | nass1pro <nass1pro@gmail.com> | 2020-06-09 19:48:34 +0200 |
|---|---|---|
| committer | nass1pro <nass1pro@gmail.com> | 2020-06-13 11:31:00 +0200 |
| commit | 579a26f5593039ffbbd1a81e45ecf0ef8797cb5d (patch) | |
| tree | c5b6761db98e27d15bab3fb45ba9e0a646cf06e0 /test_mini/parse/parse.h | |
| parent | 9fabc25a980550afc6337fd729632462f2680daa (diff) | |
| download | minishell-579a26f5593039ffbbd1a81e45ecf0ef8797cb5d.tar.gz minishell-579a26f5593039ffbbd1a81e45ecf0ef8797cb5d.tar.bz2 minishell-579a26f5593039ffbbd1a81e45ecf0ef8797cb5d.zip | |
add lexer
add single quote
Diffstat (limited to 'test_mini/parse/parse.h')
| -rw-r--r-- | test_mini/parse/parse.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/test_mini/parse/parse.h b/test_mini/parse/parse.h new file mode 100644 index 0000000..b5fe817 --- /dev/null +++ b/test_mini/parse/parse.h @@ -0,0 +1,89 @@ + + +# include <stdlib.h> +# include <stdlib.h> +# include <stdbool.h> + + +typedef enum e_sep +{ + SEP_END, + SEP_PIPE, + SEP_AND, + SEP_OR, +} t_sep; + +struct s_ast; + +/* +** \brief Line struct +** \param left AST to the left of separator +** \param right AST to the right of separator +** \param sep Type of separator +*/ + +typedef struct s_line +{ + struct s_ast *left; + struct s_ast *right; + struct s_ast *parent; + t_sep sep; +} t_line; + +/* +** \brief Command struct +** \param argv Array of string, +** all arguments beginning with executable name +** \param in STDIN redirection filename +** \param out STDOUT redirection filename +** \param is_append True if out redirection is append to file +*/ + +typedef struct s_cmd +{ + char *str; + char *in; + char *out; + bool is_append; +} t_cmd; + +/* +** \brief AST node tag (type) +** \param TAG_CMD Command AST node +** \param TAG_LINE Line AST node +*/ + +typedef enum e_ast_tag +{ + TAG_CMD, + TAG_LINE, +} t_ast_tag; + +/* +** \brief AST node struct +** \param tag Node tag +** \param cmd Command struct +** \param line Line struct +*/ + +typedef struct s_ast +{ + t_ast_tag tag; + union + { + t_line line; + t_cmd cmd; + } ; +} t_ast; + +typedef struct s_return +{ + t_ast *result; + char **rest; +} t_return; + +t_return *parse_nw(char **input); +t_return *parse(t_return *nw, char **input); + +/* utils*/ +int verif_part(char **input, char chr); |
