#include #include #include #include"lexer.h" #include"parse.h" #include"ntc.h" #include"reporting.h" #include"cg.h" #include"dumberdowner.h" static int argc; static char **argv; const char* ntc_get_arg(const char *name) { for(int i = 1; i < argc; i++) { if(strstr(argv[i], name) == argv[i]) { return argv[i] + strlen(name) + 1; } } return NULL; } int main(int argc_, char **argv_) { argc = argc_; argv = argv_; const char *in = ntc_get_arg("in"); FILE *f = in ? fopen(in, "rb") : stdin; Token *tokens = nct_lex(f); if(in) fclose(f); AST *chunk = nct_parse(tokens); free(tokens); dumben_go(chunk); while(!cg_go(chunk)) { puts(ast_dump(chunk)); dumben_go(chunk); } return 0; }