/* By: ljiriste <ljiriste@student.42prague.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/27 11:16:53 by ljiriste #+# #+# */
-/* Updated: 2024/07/07 09:44:14 by ljiriste ### ########.fr */
+/* Updated: 2024/07/08 09:20:19 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
return (success);
}
-t_ft_stat fill_closure(t_vec *closure, const t_vec *kernel, const t_vec *rules, __attribute__((unused))const t_vec *tokens)
+t_ft_stat fill_closure2(t_vec *closure, const t_vec *rules, const t_vec *tokens)
{
- size_t i;
- const t_lr1_item *item;
- t_ft_stat res;
+ size_t i;
+ t_lr1_item *item;
+ t_ft_stat res;
i = 0;
- while (i < kernel->size)
+ while (i < closure->size)
{
- item = ft_vec_caccess(kernel, i);
+ item = duplicate_item(ft_vec_caccess(closure, i));
+ if (!item)
+ return (alloc_fail);
res = add_predictions(closure, item, rules, tokens);
+ free_item(item);
if (res != success)
return (res);
++i;
}
+ return (success);
+}
+
+t_ft_stat fill_closure(t_vec *closure, const t_vec *kernel, const t_vec *rules, __attribute__((unused))const t_vec *tokens)
+{
+ size_t i;
+ const t_lr1_item *item;
+ t_ft_stat res;
+
i = 0;
- while (i < closure->size)
+ while (i < kernel->size)
{
- item = ft_vec_caccess(closure, i);
+ item = ft_vec_caccess(kernel, i);
res = add_predictions(closure, item, rules, tokens);
if (res != success)
return (res);
++i;
}
+ res = fill_closure2(closure, rules, tokens);
+ if (res != success)
+ return (res);
res = collapse_closure(closure);
return (success);
}