diff --git a/srcs/parsing/tokenizer/tokenizer_utils.c b/srcs/parsing/tokenizer/tokenizer_utils.c index 537aec7..c1bb2a1 100644 --- a/srcs/parsing/tokenizer/tokenizer_utils.c +++ b/srcs/parsing/tokenizer/tokenizer_utils.c @@ -20,47 +20,6 @@ int is_meta(char c) return (0); } -int unic(int *meta) -{ - int i; - int ref_meta; - - i = -1; - ref_meta = meta[0]; - while (meta[++i] != -1) - if (meta[i] != ref_meta) - return (0); - return (1); -} - -int is_sticked(char *val) -{ - int i; - int meta[100]; - int meta_it; - int unmeta; - - i = 0; - meta_it = 0; - meta[0] = -1; - unmeta = 0; - while (val[i]) - { - if (is_meta(val[i])) - { - meta[meta_it] = val[i]; - meta_it++; - } - if (!is_meta(val[i])) - unmeta = 1; - i++; - } - meta[meta_it] = -1; - if ((meta[0] != -1 && unmeta) || !unic(meta)) - return (1); - return (0); -} - int ft_str_count(char *s, char c) { int i; diff --git a/srcs/parsing/tokenizer/unstick_node_utils.c b/srcs/parsing/tokenizer/unstick_node_utils.c index ba6c8f6..a1c0875 100644 --- a/srcs/parsing/tokenizer/unstick_node_utils.c +++ b/srcs/parsing/tokenizer/unstick_node_utils.c @@ -21,8 +21,13 @@ char *copy_meta(char *val, int *copied) i = 0; ref = val[0]; - while (val[i] && ((is_meta(val[i]) && val[i] == ref))) - i++; + if (val[0] == '(' || val[0] == ')') + i = 1; + else + { + while (val[i] && ((is_meta(val[i]) && val[i] == ref))) + i++; + } *copied = i; out = malloc(i + 1); j = -1; @@ -49,3 +54,45 @@ char *copy_unmeta(char *val, int *copied) out[i] = 0; return (out); } + +int unic(int *meta) +{ + int i; + int ref_meta; + + i = -1; + ref_meta = meta[0]; + while (meta[++i] != -1) + if (meta[i] != ref_meta) + return (0); + return (1); +} + +int is_sticked(char *val) +{ + int i; + int meta[100]; + int meta_it; + int unmeta; + + i = 0; + meta_it = 0; + meta[0] = -1; + unmeta = 0; + while (val[i]) + { + if (is_meta(val[i])) + { + meta[meta_it] = val[i]; + meta_it++; + } + if (!is_meta(val[i])) + unmeta = 1; + i++; + } + meta[meta_it] = -1; + if ((meta[0] != -1 && unmeta) || !unic(meta) || (meta[0] == '(' + && meta[1] == '(') || (meta[0] == ')' && meta[1] == ')')) + return (1); + return (0); +}