/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/04/26 13:11:47 by ljiriste #+# #+# */
-/* Updated: 2024/07/21 21:24:30 by ljiriste ### ########.fr */
+/* Updated: 2024/08/02 18:50:53 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
free(line);
}
clean_env(&env);
+ parse(NULL, NULL);
get_next_line(-1);
free(line);
ft_printf("exit\n");
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/05/03 15:58:55 by ljiriste #+# #+# */
-/* Updated: 2024/08/02 17:03:23 by ljiriste ### ########.fr */
+/* Updated: 2024/08/02 18:49:51 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
// table should be static or loaded at start and passed in as argument
int parse(t_vec *tokens, t_tree **parse_tree)
{
- t_parsing_table table;
+ static t_parsing_table table = {.terminal_tokens_num = 0};
- ft_parsing_table_init(&table);
- ft_parsing_table_load_str(&table, g_str_table, g_str_rules);
- *parse_tree = ft_parse(tokens, &table);
- ft_parsing_table_free(&table);
+ if (table.terminal_tokens_num == 0)
+ {
+ ft_parsing_table_init(&table);
+ ft_parsing_table_load_str(&table, g_str_table, g_str_rules);
+ }
+ if (!parse_tree)
+ {
+ ft_parsing_table_free(&table);
+ return (0);
+ }
+ else
+ *parse_tree = ft_parse(tokens, &table);
return (*parse_tree == NULL);
}