aboutsummaryrefslogtreecommitdiff
path: root/src/repl.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/repl.c')
-rw-r--r--src/repl.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/repl.c b/src/repl.c
index d590fec..7ff80a8 100644
--- a/src/repl.c
+++ b/src/repl.c
@@ -6,14 +6,34 @@
/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/24 16:07:04 by dkaiser #+# #+# */
-/* Updated: 2024/09/13 16:26:35 by dkaiser ### ########.fr */
+/* Updated: 2025/01/11 16:01:44 by chuhlig ### ########.fr */
/* */
/* ************************************************************************** */
#include "../include/minishell.h"
#include "token.h"
-void repl(const char *prompt)
+t_token *reverse_token_list(t_token *head)
+{
+ t_token *prev;
+ t_token *current;
+ t_token *next;
+
+ prev = NULL;
+ current = head;
+ next = NULL;
+ while (current != NULL)
+ {
+ next = current->previous;
+ current->next = prev;
+ current->previous = next;
+ prev = current;
+ current = next;
+ }
+ return (prev);
+}
+
+void repl(const char *prompt, t_env **env)
{
char *input;
t_token *token_list;
@@ -29,9 +49,13 @@ void repl(const char *prompt)
add_history(input);
token_list = NULL;
tokenizer(input, &token_list, '\0');
- lines = parse(token_list);
+ token_list = reverse_token_list(token_list);
+ lines = parse(token_list, env);
if (lines)
+ {
print_ast(lines->content);
+ eval(lines->content, env);
+ }
free(input);
}
}