#include #include #include "types.h" #include "tokenizer.h" #include "interpreter.h" #include "native_functions.h" int main(int argc, char **argv) { if (argc < 2) { printf("Usage: rc \n"); return 1; } FILE *f = fopen(argv[1], "rb"); if (!f) { printf("Could not open file.\n"); return 1; } src_code = malloc(MAX_SRC + 1); if (!src_code) { printf("Memory allocation failed.\n"); fclose(f); return 1; } size_t n = fread(src_code, 1, MAX_SRC, f); if (n >= MAX_SRC) n = MAX_SRC - 1; src_code[n] = 0; fclose(f); register_native_functions(); tokenize(src_code); scan_functions(); int main_idx = find_func("main", 4); if (main_idx == -1 || main_idx >= func_cnt) { printf("No main function found.\n"); return 1; } pc = funcs[main_idx].entry_point; if (sp + 2 >= MEM_SIZE) { printf("Stack overflow during initialization.\n"); return 1; } memory[sp++] = 0; memory[sp++] = 0; ax = 0; statement(); free(src_code); return 0; }