From 3780767352513a759dfd78601b1990b490237289 Mon Sep 17 00:00:00 2001 From: Lukas Jiriste Date: Thu, 11 Jul 2024 22:44:57 +0200 Subject: [PATCH] Make ft_parse ablle to follow rule to empty token --- ft_parse/actions.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) 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) { -- 2.30.2