/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/21 15:34:14 by ljiriste #+# #+# */
-/* Updated: 2024/06/21 15:36:12 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:46:28 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
if (!element.node)
return (1);
ft_vec_init(&element.node->children, sizeof(t_parse_tree_node));
- element.node->token = dup_token(token);
+ element.node->token = ft_token_dup(token);
if (!element.node->token.type)
return (1);
element.state_num = state_num;
return (1);
ft_vec_init(&element.node->children, sizeof(t_parse_tree_node));
rule = ft_vec_caccess(&table->rules, rule_num);
- element.node->token = dup_token(rule->result);
+ element.node->token = ft_token_dup(rule->result);
i = rule->constituents.size;
while (i > 0)
{
/* By: ljiriste <ljiriste@student.42prague.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/20 20:51:36 by ljiriste #+# #+# */
-/* Updated: 2024/06/21 15:36:40 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:45:13 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
column = find_token_index(token, &table->tokens);
if (column < 0 || (size_t)column > table->terminal_tokens_num)
{
- ft_stack_free(stack, free_stack_element);
+ ft_stack_free(stack, ft_free_stack_element);
return (NULL);
}
return (ft_vec_caccess(&state->lookahead, column));
|| (action->type == parser_shift
&& push_state(&stack, action->number, token)))
{
- ft_stack_free(&stack, free_stack_element);
+ ft_stack_free(&stack, ft_free_stack_element);
return (NULL);
}
else if (action->type == parser_accept)
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/20 13:23:20 by ljiriste #+# #+# */
-/* Updated: 2024/06/21 15:37:09 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:57:14 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
# include "libft.h"
-void free_token(void *v_token);
-void free_rule(void *v_rule);
-void free_state(void *v_state);
-void free_stack_element(void *v_el);
+void ft_free_token(void *v_token);
+void ft_free_rule(void *v_rule);
+void ft_free_state(void *v_state);
+void ft_free_stack_element(void *v_el);
-t_token dup_token(t_token token);
+t_token ft_token_dup(t_token token);
ssize_t find_token_index(t_token token, const t_vec *tokens);
t_ft_stat load_rules(t_vec *rules, const char *rules_filename);
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/21 15:26:34 by ljiriste #+# #+# */
-/* Updated: 2024/06/21 15:28:52 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:45:20 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
if (!node)
return ;
ft_vec_free(&node->children, parse_tree_free_children);
- free_token(&node->token);
+ ft_free_token(&node->token);
}
void ft_parse_tree_free(void *node)
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/20 13:21:26 by ljiriste #+# #+# */
-/* Updated: 2024/06/20 13:49:40 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:56:50 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_parse.h"
#include <stdlib.h>
-void free_token(void *v_token)
+void ft_free_token(void *v_token)
{
t_token *token;
return ;
}
-void free_rule(void *v_rule)
+void ft_free_rule(void *v_rule)
{
t_grammar_rule *rule;
rule = v_rule;
- free_token(&rule->result);
- ft_vec_free(&rule->constituents, free_token);
+ ft_free_token(&rule->result);
+ ft_vec_free(&rule->constituents, ft_free_token);
return ;
}
-void free_state(void *v_state)
+void ft_free_state(void *v_state)
{
t_parser_state *state;
void ft_parsing_table_free(t_parsing_table *table)
{
- ft_vec_free(&table->rules, free_rule);
- ft_vec_free(&table->states, free_state);
- ft_vec_free(&table->tokens, free_token);
+ ft_vec_free(&table->rules, ft_free_rule);
+ ft_vec_free(&table->states, ft_free_state);
+ ft_vec_free(&table->tokens, ft_free_token);
return ;
}
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/21 15:30:29 by ljiriste #+# #+# */
-/* Updated: 2024/06/21 15:33:39 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:52:09 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_parse.h"
#include "libft.h"
-void free_stack_element(void *v_el)
+void ft_free_stack_element(void *v_el)
{
t_parser_stack_element *el;
return ;
}
-t_token dup_token(t_token token)
+t_token ft_token_dup(t_token token)
{
t_token res;
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/20 13:29:48 by ljiriste #+# #+# */
-/* Updated: 2024/06/20 13:50:16 by ljiriste ### ########.fr */
+/* Updated: 2024/06/21 16:45:29 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
rule = parse_rule(line);
if (!is_valid_rule(&rule) || ft_vec_append(rules, &rule) != success)
{
- ft_vec_free(rules, free_rule);
+ ft_vec_free(rules, ft_free_rule);
return (non_specific_failure);
}
free(line);