--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_parse.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <ljiriste@student.42prague.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2024/05/20 20:51:36 by ljiriste #+# #+# */
+/* Updated: 2024/05/27 22:57:11 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#include "ft_parse.h"
+
+t_parsing_table ft_load_parsing_table(const char *filename)
+{
+ int fd;
+ t_parsing_table table;
+
+ fd = open(filename, O_RDONLY);
+ if (fd < 0)
+ return (NULL);
+ ft_vec_init(&table.rules, sizeof(t_grammar_rule));
+ ft_vec_init(&table.states, sizeof(t_parser_state));
+ line = get_next_line(fd);
+ while (line)
+ {
+ if (add_line(&table, line))
+ {
+ ft_free_parsing_table(&table);
+ return (NULL);
+ }
+ free(line);
+ line = get_next_line(fd);
+ }
+ return (table);
+}
+
+void ft_free_parsing_table(t_parsing_table *table)
+{
+ ft_vec_free(&table.rules, free_rule);
+ ft_vec_free(&table.states, free_state);
+ return ;
+}
+
+t_parse_tree *ft_parse(t_vec tokens, t_parsing_table *parsing_table)
+{
+}
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_parse.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <ljiriste@student.42prague.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2024/05/27 21:21:54 by ljiriste #+# #+# */
+/* Updated: 2024/05/27 22:57:11 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_PARSE_H
+# define FT_PARSE_H
+
+typedef struct s_grammar_rule
+{
+ t_token result;
+ t_vec constituents; // t_vec of t_tokens
+} t_grammar_rule;
+
+enum e_parser_action_type
+{
+ parser_accept;
+ parser_refuse;
+ parser_reduce;
+ parser_shift;
+}
+
+typedef struct s_parser_action
+{
+ enum e_parse_action_type type;
+ size_t number;
+} t_parser_action;
+
+typedef struct s_parser_state
+{
+ t_vec lookahead; // t_vec of t_action
+ t_vec gotos; // t_vec of size_t
+} t_parser_state;
+
+typedef struct s_parsing_table
+{
+ t_vec rules; // t_vec of t_grammar_rule
+ t_vec states; // t_vec of t_parser_state
+} t_parsing_table;
+
+#endif // FT_PARSE_H