diff options
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 198 |
1 files changed, 63 insertions, 135 deletions
@@ -6,7 +6,7 @@ /* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */ -/* Updated: 2020/06/18 13:46:10 by charles ### ########.fr */ +/* Updated: 2020/06/18 14:38:24 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,113 +21,63 @@ #include "parser.h" #include "eval.h" -/* void token_debug(void *v) */ -/* { */ -/* t_token *t; */ -/* */ -/* t= v; */ -/* printf("[%4d %d] (%s)\n", t->tag, !!(t->tag & TAG_STICK), t->content); */ -/* } */ -/* */ -/* int main(int argc, char **argv, char **envp) */ -/* { */ -/* t_path path; */ -/* t_env env; */ -/* */ -/* env = env_from_array(envp); */ -/* path = path_update(NULL, env_search(env, "PATH")); */ -/* #<{(| printf("%s\n", argv[2]); |)}># */ -/* */ -/* 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); */ -/* */ -/* t_ret *parser_out = parse(lex_out); */ -/* */ -/* #<{(| printf("===cmd_argv===\n"); |)}># */ -/* #<{(| ft_lstiter(parser_out->ast->cmd_argv, token_debug); |)}># */ -/* #<{(| printf("===redirs===\n"); |)}># */ -/* #<{(| ft_lstiter(parser_out->ast->redirs, token_debug); |)}># */ -/* */ -/* int fds[2] = {MS_NO_FD, MS_NO_FD}; */ -/* int eval_out = eval_cmd(fds, env, path, parser_out->ast); */ -/* (void)eval_out; */ -/* } */ -/* */ -/* ft_htdestroy(path, free); */ -/* ft_vecdestroy(env, free); */ -/* return (0); */ -/* } */ +void token_debug(void *v); +void token_put(void *v); +void print_level(int level); +void ast_print(int level, t_ast *ast); -void token_put(void *v) +int main(int argc, char **argv, char **envp) { - t_token *t; - - t= v; - printf("%s ", t->content); -} + t_path path; + t_env env; -void print_level(int level) -{ - while (level-- > 0) - printf(" "); -} + env = env_from_array(envp); + path = path_update(NULL, env_search(env, "PATH")); + /* printf("%s\n", argv[2]); */ -void ast_print(int level, t_ast *ast) -{ - if (ast->tag == AST_CMD) + if (argc == 3 && ft_strcmp(argv[1], "-c") == 0) { - print_level(level); - printf("cmd: [ "); - ft_lstiter(ast->cmd_argv, token_put); - printf(" ] redirs: ["); - ft_lstiter(ast->redirs, token_put); - printf(" ]"); - } - else - { - /* print_level(level); */ - /* printf("SEP: %d\n", ast->op.sep); */ - print_level(level); - printf("{\n"); - - print_level(level); - printf(" left:\n"); - ast_print(level + 1, ast->op.left); - - printf("\n"); - print_level(level); - printf(" right:\n"); - ast_print(level + 1, ast->op.right); - - printf("\n"); - print_level(level); - printf("}\n"); + //printf("%s\n", argv[2]); + t_ftlst *lex_out = lexer(ft_strdup(argv[2])); + + //ft_lstiter(lex_out, token_debug); + + t_ret *parser_out = parse(lex_out); + + /* printf("===cmd_argv===\n"); */ + /* ft_lstiter(parser_out->ast->cmd_argv, token_debug); */ + /* printf("===redirs===\n"); */ + /* ft_lstiter(parser_out->ast->redirs, token_debug); */ + + int fds[2] = {MS_NO_FD, MS_NO_FD}; + int eval_out = eval(fds, env, path, parser_out->ast); + (void)eval_out; } + + ft_htdestroy(path, free); + ft_vecdestroy(env, free); + return (0); } -int main(int argc, char **argv, char **envp) -{ - (void)argc; - (void)argv; +/* int main(int argc, char **argv, char **envp) */ +/* { */ + /* (void)argc; */ + /* (void)argv; */ /* (void)envp; */ - t_path path; - t_env env; + /* t_path path; */ + /* t_env env; */ /* char *line; */ /* int ret; */ - env = env_from_array(envp); - path = path_update(NULL, env_search(env, "PATH")); + /* env = env_from_array(envp); */ + /* path = path_update(NULL, env_search(env, "PATH")); */ - t_ftlst *args1 = NULL; - ft_lstpush_back(&args1, ft_lstnew(token_new(TAG_STR, "ls"))); - ft_lstpush_back(&args1, ft_lstnew(token_new(TAG_STR, "-l"))); + /* t_ftlst *args1 = NULL; */ + /* ft_lstpush_back(&args1, ft_lstnew(token_new(TAG_STR, "ls"))); */ + /* ft_lstpush_back(&args1, ft_lstnew(token_new(TAG_STR, "-l"))); */ - t_ftlst *args2 = NULL; - ft_lstpush_back(&args2, ft_lstnew(token_new(TAG_STR, "cat"))); - ft_lstpush_back(&args2, ft_lstnew(token_new(TAG_STR, "-e"))); + /* t_ftlst *args2 = NULL; */ + /* ft_lstpush_back(&args2, ft_lstnew(token_new(TAG_STR, "cat"))); */ + /* ft_lstpush_back(&args2, ft_lstnew(token_new(TAG_STR, "-e"))); */ /* ft_lstpush_back(&args2, ft_lstnew(token_new(TAG_STR, "je"))); */ /* ft_lstpush_back(&args, ft_lstnew(token_new(TAG_STR, "ls"))); */ @@ -148,30 +98,30 @@ int main(int argc, char **argv, char **envp) /* ft_lstpush_back(&args, ft_lstnew(token_new(TAG_STR_DOUBLE | TAG_STICK, "$TEST"))); */ /* ft_lstpush_back(&args, ft_lstnew(token_new(TAG_STR_SINGLE, "$TEST"))); */ - t_ftlst *redirs = NULL; - ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_REDIR_OUT, NULL))); - ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_STR, "bonjour"))); + /* t_ftlst *redirs = NULL; */ + /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_REDIR_OUT, NULL))); */ + /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_STR, "bonjour"))); */ /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_REDIR_APPEND, NULL))); */ /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_STR, "yo"))); */ /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_REDIR_OUT, NULL))); */ /* ft_lstpush_back(&redirs, ft_lstnew(token_new(TAG_STR, "yo1"))); */ - t_ast *cmd1 = ast_new(AST_CMD); - cmd1->cmd_argv = args1; - cmd1->redirs = NULL; + /* t_ast *cmd1 = ast_new(AST_CMD); */ + /* cmd1->cmd_argv = args1; */ + /* cmd1->redirs = NULL; */ - t_ast *cmd2 = ast_new(AST_CMD); - cmd2->cmd_argv = args2; - cmd2->redirs = NULL; + /* t_ast *cmd2 = ast_new(AST_CMD); */ + /* cmd2->cmd_argv = args2; */ + /* cmd2->redirs = NULL; */ - t_ast *op_ast = ast_new(AST_OP); - op_ast->op.left = cmd1; - op_ast->op.right = cmd2; - op_ast->op.sep = TAG_PIPE; + /* t_ast *op_ast = ast_new(AST_OP); */ + /* op_ast->op.left = cmd1; */ + /* op_ast->op.right = cmd2; */ + /* op_ast->op.sep = TAG_PIPE; */ - int fds[2] = {MS_NO_FD, MS_NO_FD}; - printf("eval %d\n", eval(fds, env, path, op_ast)); + /* int fds[2] = {MS_NO_FD, MS_NO_FD}; */ + /* printf("eval %d\n", eval_cmd(fds, env, path, cmd1)); */ /* char **as = preprocess(l, env); */ /* printf("%p\n", as); */ @@ -180,29 +130,7 @@ int main(int argc, char **argv, char **envp) /* while (*as != NULL) */ /* puts(*as++); */ /* ft_split_destroy(tmp); */ - ft_htdestroy(path, free); - ft_vecdestroy(env, free); - return (0); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// lexer main -///////////////////////////////////////////////////////////////////////////////////////// - -/* int main(int argc, char **argv) */ -/* { */ -/* char *input; */ -/* t_ftlst *lst; */ -/* */ -/* if (argv[1] == NULL) */ -/* return (0); */ -/* if (!(input = malloc(sizeof(char) * ft_strlen(argv[1]) + 1))) */ -/* return(0); */ -/* ft_strlcpy(input, argv[1], ft_strlen(argv[1]) + 1); */ -/* */ -/* lst = lexer(input); */ -/* parse(lst); */ -/* free(input); */ -/* exit(0); */ -/* return (0); */ +/* ft_htdestroy(path, free); */ +/* ft_vecdestroy(env, free); */ +/* return (0); */ /* } */ |
