Skip to content

Commit

Permalink
refactor(parenthese): Fix global parenthese err_handling
Browse files Browse the repository at this point in the history
  • Loading branch information
mlargeot committed May 14, 2023
1 parent 95fc08c commit 2b08571
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 11 deletions.
48 changes: 46 additions & 2 deletions src/parenthese/err_handling/handle_bp.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,54 @@

#include "my.h"

int is_joker(char c, const char **jokers);
const char *jokers[] = {";", "||", "|", "<<", ">>", ">", "<", "&&", "(", NULL};
int is_joker(const char *str, const char **jokers);
int print_par_error(int err_id);
const char *bf_jokers[] = {";", "||", "|", "<<", ">>", ">", "<",
"&&", "(", NULL};
const char *af_jokers[] = {";", "||", "|", "<<", ">>", ">", "<",
"&&", ")", NULL};

static int handle_type_err(char *arg)
{
if (!strcmp(arg, ")") || !strcmp(arg, "("))
return print_par_error(1);
else
return print_par_error(3);
}

static int check_before_pos(char **argv, size_t i)
{
if (i == 0) {
return 0;
} else {
if (!is_joker(argv[i - 1], bf_jokers))
return handle_type_err(argv[i - 1]);
}
return 0;
}

static int check_after_pos (char **argv, size_t i)
{
if (argv[i + 1] == NULL) {
return 0;
} else {
if (!is_joker(argv[i + 1], af_jokers))
return handle_type_err(argv[i + 1]);
}
return 0;
}

int handle_bp(char **argv)
{
int ret;

for (size_t i = 0; argv[i] != NULL; i++) {
if (!strcmp(argv[i], "("))
ret = check_before_pos(argv, i);
if (!strcmp(argv[i], ")"))
ret = check_after_pos(argv, i);
if (ret)
return 1;
}
return 0;
}
9 changes: 2 additions & 7 deletions src/parenthese/err_handling/handle_tm.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,7 @@

int print_par_error(int err_id);

static int handle_tm_argv(char **argv)
{
return 0;
}

int handle_tm(char *input, char **argv)
int handle_tm(char *input)
{
ssize_t nb = 0;

Expand All @@ -28,5 +23,5 @@ int handle_tm(char *input, char **argv)
}
if (nb > 0)
return print_par_error(2);
return handle_tm_argv(argv);
return 0;
}
4 changes: 2 additions & 2 deletions src/parsing/check_parenthesis.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@

#include "my.h"

int handle_tm(char *str, char **argv);
int handle_tm(char *input);
int handle_bp(char **argv);

int check_parenthesis(term_t *term)
{
if (handle_tm(term->str, term->argv))
if (handle_tm(term->str))
return 1;
else if (handle_bp(term-> argv))
return 1;
Expand Down

0 comments on commit 2b08571

Please sign in to comment.