diff --git a/tests/tokenizer/linked_list.c b/tests/tokenizer/linked_list.c index 6596f89..5e37760 100644 --- a/tests/tokenizer/linked_list.c +++ b/tests/tokenizer/linked_list.c @@ -129,6 +129,10 @@ void debug_linked_list(t_node *head, char *msg) pres = ft_strdup("D_RED_R "); else if (current->pressision == PARAMETER) pres = ft_strdup("PARAMETER"); + else if (current->pressision == RED_FILE) + pres = ft_strdup("RED_FILE "); + else if (current->pressision == LIM) + pres = ft_strdup("LIM "); else pres = ft_strdup("??? "); diff --git a/tests/tokenizer/token_and_pres.c b/tests/tokenizer/token_and_pres.c index a09b5aa..789ddcb 100644 --- a/tests/tokenizer/token_and_pres.c +++ b/tests/tokenizer/token_and_pres.c @@ -48,10 +48,16 @@ t_token get_token(char *str) return (token); } -t_pres get_pressision(char *s, t_token token, t_token last_token) +t_pres get_pressision(char *s, t_token token, + t_token last_token, t_pres last_pres) { if (token == OPERATOR) return (get_operator(s)); + else if (last_token == OPERATOR && (last_pres == RED_R + || last_pres == RED_L || last_pres == D_RED_R)) + return (RED_FILE); + else if (last_token == OPERATOR && last_pres == HEREDOC) + return (LIM); else if (last_token == OPERATOR || last_token == UNSET) return (COMMAND); return (PARAMETER); diff --git a/tests/tokenizer/tokenizer.c b/tests/tokenizer/tokenizer.c index 3bc34a8..e9d198f 100644 --- a/tests/tokenizer/tokenizer.c +++ b/tests/tokenizer/tokenizer.c @@ -39,14 +39,17 @@ static void set_token(t_node *head) { t_node *it; t_token last_token; + t_pres last_pres; it = head; last_token = UNSET; + last_pres = UNDEFINED; while (it != NULL) { it->token = get_token(it->val); - it->pressision = get_pressision(it->val, it->token, last_token); + it->pressision = get_pressision(it->val, it->token, last_token, last_pres); last_token = it->token; + last_pres = it->pressision; it = it->next; } } diff --git a/tests/tokenizer/tokenizer.h b/tests/tokenizer/tokenizer.h index e4e708c..42e1fd7 100644 --- a/tests/tokenizer/tokenizer.h +++ b/tests/tokenizer/tokenizer.h @@ -35,7 +35,9 @@ typedef enum e_pres RED_R, HEREDOC, D_RED_R, - PARAMETER + PARAMETER, + RED_FILE, + LIM } t_pres; typedef struct s_node @@ -52,7 +54,7 @@ int add_node_back(t_node *head, char *val, t_token token); int merge_with_next_node(t_node *node); void free_linked_list(t_node *stack); t_token get_token(char *str); -t_pres get_pressision(char *s, t_token token, t_token last_token); +t_pres get_pressision(char *s, t_token token, t_token last_token, t_pres last_pres); int create_node_after(t_node *elem, char *val); char *copy_meta_xor(char *val, int *copied, int rev); int is_meta(char c); diff --git a/tests/tokenizer/tokenizer_utils2.c b/tests/tokenizer/tokenizer_utils2.c deleted file mode 100644 index e69de29..0000000