/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* lm_parser.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/25 06:30:51 by mndhlovu #+# #+# */ /* Updated: 2019/04/08 15:44:55 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #include "lem_in.h" // void lm_locate_cmd(t_syntax *synt) // { // char *line; // char *tmp; // int index; // index = 0; // while (ft_getline(&line) > 0) // { // tmp = ft_strchr(line, '#'); // if ((!synt->s_cmd || !synt->e_cmd) && (tmp != NULL && line[1] == '#')) // { // if (!synt->s_cmd) // { // if (ft_strcmp(tmp, "##start") == 0) // { // synt->s_cmd = 1; // } // } // if (!synt->e_cmd) // { // if (ft_strcmp(tmp, "##end") == 0) // { // synt->e_cmd = 1; // synt->e_pos = index; // } // } // } // index++; // } // } void lm_locate_cd(int index, t_syntax *synt, char *line) { char *tmp; tmp = ft_strchr(line, '#'); if ((!synt->s_cmd || !synt->e_cmd) && (tmp != NULL && line[1] == '#')) { if (!synt->s_cmd) { if (ft_strcmp(tmp, "##start") == 0) { synt->s_cmd = 1; synt->s_pos = index; } } if (!synt->e_cmd) { if (ft_strcmp(tmp, "##end") == 0) { synt->e_cmd = 1; synt->e_pos = index; } } } } // void lm_locate_cmd(t_syntax *synt) // { // char *line; // char *tmp; // int index; // index = 0; // while (ft_getline(&line) > 0) // { // tmp = ft_strchr(line, '#'); // if ((!synt->s_cmd || !synt->e_cmd) && (tmp != NULL && line[1] == '#')) // { // if (!synt->s_cmd) // { // if (ft_strcmp(tmp, "##start") == 0) // { // synt->s_cmd = 1; // } // } // if (!synt->e_cmd) // { // if (ft_strcmp(tmp, "##end") == 0) // { // synt->e_cmd = 1; // synt->e_pos = index; // } // } // } // index++; // } // } // int lm_get_ant_num(t_lmdata *ldata, t_syntax *synt) // { // char *line; // int value; // if (ft_getline(&line) > 0) // { // value = lm_get_value(line); // if (value != -1) // { // ldata->nbants = value; // synt->nb_state = 1; // return (1); // } // free(line); // } // return (0); // } int lm_get_ant_(int counter, t_lmdata *ldata, t_syntax *synt, char *line) { int value; if (counter == 0) { value = lm_get_value(line); if (value != -1) { ldata->nbants = value; synt->nb_state = 1; return (1); } free(line); } return (0); } static int lm_get_vertices(int count, t_syntax *synt, t_lmdata *data, t_holder *holder, char *line) { lm_get_cmd_vert(count, synt, data, line); if (!synt->s_error && !synt->e_error) { lm_get_vert_link(count, synt, data, holder, line); if (!synt->v_error && !synt->l_error) return (1); } return (0); } int lm_parser(t_syntax *synt, t_lmdata *ldata, t_holder *holder) { char *raw; int index; index = 0; while (ft_getline(&raw) > 0) { if (!(lm_get_ant_(index, ldata, synt, raw)) && index == 0) return (0); lm_locate_cd(index, synt, raw); if (!(lm_get_vertices(index, synt, ldata, holder, raw))) return (0); index++; } free(raw); return (1); }