#include #include #include #include #include #include "syntax.h" #include "stages.h" #include "utils.h" void execute_line(char *line, ShellState *shstate) { Ast ast = lex(line); PipelineTree pltree = process_ast(ast, shstate); execute_pipeline_tree(pltree, shstate); } int main() { ShellState shstate = {.shell_vars = make_KeyValMap(256), .aliases = make_KeyValMap(256)}; char* line; while (1) { line = readline("$ "); if (line[0] == '\0') continue; add_history(line); execute_line(line, &shstate); } free(line); }