#include #include #include #include #include "defs.h" #include "lex.h" #include "parse.h" #include "exec.h" int main() { char* line; ShellState shstate = {.shell_vars = make_KeyValMap(1), .aliases = make_KeyValMap(1)}; while (1) { line = readline("$ "); if (line[0] == '\0') continue; if (strcmp(line, "exit") == 0) exit(0); PreprocArena arena = { .tokens = make_TokenVec(256), .chunks = make_ChunkVec(256), .regions = make_RegionVec(256), }; TokenPtrVec line_tok_ptrs = lex(line, &arena); Token* tokstream = malloc(sizeof(Token) * line_tok_ptrs.count); for (int i = 0; i < line_tok_ptrs.count; i++) { tokstream[i] = **get_from_TokenPtrVec(&line_tok_ptrs, i); } Pipeline pl = parse_tokstream(tokstream); run_pipeline(pl, &shstate); free(tokstream); } free(line); }