aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lexer/lexer_utils.c4
-rw-r--r--src/lexer/trim.c1
-rw-r--r--src/main.c5
-rwxr-xr-xsrc/parse/parse.c13
4 files changed, 12 insertions, 11 deletions
diff --git a/src/lexer/lexer_utils.c b/src/lexer/lexer_utils.c
index 1b13eaa..616c0d3 100644
--- a/src/lexer/lexer_utils.c
+++ b/src/lexer/lexer_utils.c
@@ -63,7 +63,7 @@ static int lex_verif_simple_cote(char *input, int i)
{
++i;
if(input[i] == '\\')
- i+=2;
+ i+=1;
if(input[i] == '\'')
break;
}
@@ -81,7 +81,7 @@ int lexer_verif_entre_cote(char *input, int i)
while(input[i] != '"' && (input[i] != '\0'))
{
if (input[i] == '\\')
- i += 2;
+ i += 1;
++i;
}
if (input[i + 1] == ' ')
diff --git a/src/lexer/trim.c b/src/lexer/trim.c
index 6c435d5..656fae6 100644
--- a/src/lexer/trim.c
+++ b/src/lexer/trim.c
@@ -48,6 +48,7 @@ t_ftlst *lexe_trim_out(t_ftlst *lst)
while(lst != NULL)
{
tk = lst->data;
+ printf("%s\n",tk->content );
if (tk->tag & (TAG_STR_DOUBLE | TAG_STR_SINGLE))
{
tk->content = del_quote(tk->content);
diff --git a/src/main.c b/src/main.c
index ee00e00..a22c733 100644
--- a/src/main.c
+++ b/src/main.c
@@ -40,11 +40,12 @@ int main(int argc, char **argv, char **envp)
if (argc == 3 && ft_strcmp(argv[1], "-c") == 0)
{
+ //printf("%s\n", argv[2]);
t_ftlst *lex_out = lexer(ft_strdup(argv[2]));
- //ft_lstiter(lex_out, token_debug);
+ ft_lstiter(lex_out, token_debug);
- t_ret *ret = parse(lex_out);
+ t_ret *ret = parse(lex_out);
printf("===========cmd=============\n");
while(ret->ast->cmd_argv != NULL)
diff --git a/src/parse/parse.c b/src/parse/parse.c
index 795afc7..d1303bc 100755
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -29,26 +29,25 @@ t_ret *parse(t_ftlst *input)
if (parse_cmd_str_true_false(tag))
{
ret->ast = push_cmd(ret->ast, ret->rest);
- if (ret->rest != NULL)
- ret->rest = ret->rest->next;
}
else if (parse_redir_true_false(tag))
{
while(ret->rest != NULL)
{
ret->ast = push_redir(ret->ast, ret->rest);
- ret->rest = ret->rest->next;
- ret->ast = push_redir(ret->ast, ret->rest);
- tag = ((t_token *)ret->rest->data)->tag;
- if ((tag & TAG_IS_STR && tag & TAG_STICK) || tag == TAG_IS_REDIR)
+ if (tag & TAG_IS_STR && tag & TAG_STICK)
+ ret->rest = ret->rest->next;
+ else if (tag & TAG_IS_REDIR)
ret->rest = ret->rest->next;
else
{
- ret->rest = ret->rest->next;
+ //ret->rest = ret->rest->next;
break;
}
+ tag = ((t_token *)ret->rest->data)->tag;
}
}
+ ret->rest = ret->rest->next;
}
// printf("===========cmd=============\n");
// while(ret->ast->cmd_argv != NULL)