From: Lukas Jiriste Date: Thu, 11 Jul 2024 20:44:57 +0000 (+0200) Subject: Make ft_parse ablle to follow rule to empty token X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=3780767352513a759dfd78601b1990b490237289;p=Libft.git Make ft_parse ablle to follow rule to empty token --- diff --git a/ft_parse/actions.c b/ft_parse/actions.c index 9dcc13f..0852052 100644 --- a/ft_parse/actions.c +++ b/ft_parse/actions.c @@ -6,7 +6,7 @@ /* By: ljiriste +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/21 15:34:14 by ljiriste #+# #+# */ -/* Updated: 2024/07/04 12:22:27 by ljiriste ### ########.fr */ +/* Updated: 2024/07/11 21:33:32 by ljiriste ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,8 @@ #include "libft.h" #include +static const t_token empty_token = {.type = "''", .str = NULL}; + int push_state(t_stack *stack, size_t state_num, t_token token) { t_parser_stack_element element; @@ -48,7 +50,18 @@ static int hang_top_from_tree(t_stack *stack, t_parse_tree_node *tree, { t_parse_tree_node *node; - node = ((t_parser_stack_element *)ft_stack_pop(stack, NULL))->node; + if (!ft_strcmp(constituent_token->type, "''")) + { + node = malloc(sizeof(*node)); + if (!node || ft_vec_init(&node->children, sizeof(*node))) + { + free(node); + return (1); + } + node->token = ft_token_dup(&empty_token); + } + else + node = ((t_parser_stack_element *)ft_stack_pop(stack, NULL))->node; if (ft_strcmp(node->token.type, constituent_token->type) || ft_vec_insert(&tree->children, node, 0) != success) {