From d57fa081d7f5c90a794b13c2396d7edc0c2465d5 Mon Sep 17 00:00:00 2001 From: Scarlett Date: Sun, 4 May 2025 18:58:17 -0400 Subject: [PATCH] dont mess up silly --- src/grammar.h | 1 + src/grammar.y | 1 + src/runner.c | 17 +++++++++++++++-- src/runner.h | 3 +++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/grammar.h b/src/grammar.h index 5e1276b..86300f4 100644 --- a/src/grammar.h +++ b/src/grammar.h @@ -9,6 +9,7 @@ extern FILE *asc_flag; extern bool tc_flag; extern void insert_code_line(char * error_message, int line_number); +extern bool contains_errors; typedef enum { ERROR_RUNTIME = 1, diff --git a/src/grammar.y b/src/grammar.y index 064e56b..caea862 100644 --- a/src/grammar.y +++ b/src/grammar.y @@ -1536,6 +1536,7 @@ void throw_error(ErrorType error_type, const char *format, ...) { void yyerror(const char *err) { int line = yylloc.first_line; int column = yylloc.first_column; + contains_errors = true; // Grammar Fallback Case if (strcmp(err, "syntax error") == 0) { diff --git a/src/runner.c b/src/runner.c index 09a080f..ba25b2c 100644 --- a/src/runner.c +++ b/src/runner.c @@ -157,13 +157,22 @@ int run(FILE *alpha) { if (ir_flag != NULL) { printdebug("[-ir] Intermediate code is enabled."); - emit_as_file(ir_flag, begin); + if (contains_errors) { + emit_as_file(ir_flag, begin); + } else { + remove(ir_name); + } fclose(ir_flag); } if (cg_flag != NULL) { printdebug("[-cg] Code generation is enabled."); - generate(); + + if (contains_errors) { + generate(); + } else { + remove(cg_name); + } fclose(cg_flag); } @@ -236,8 +245,12 @@ int new_file(char *arg, char *alpha) { } else if (strcmp(arg, "-asc") == 0) { asc_flag = fopen(file_name, "w"); } else if (strcmp(arg, "-ir") == 0) { + ir_name = malloc(strlen(file_name) + 1); + strcpy(ir_name, file_name); ir_flag = fopen(file_name, "w"); } else if (strcmp(arg, "-cg") == 0) { + cg_name = malloc(strlen(file_name) + 1); + strcpy(cg_name, file_name); cg_flag = fopen(file_name, "w"); } return 0; diff --git a/src/runner.h b/src/runner.h index 979c36b..c423a36 100644 --- a/src/runner.h +++ b/src/runner.h @@ -58,6 +58,9 @@ bool tc_flag = false; bool DEBUG = false; int no_flag = 0; int arg; +bool contains_errors = false; +char * cg_name; +char * ir_name; TableNode *funprime; TableNode *arrayprim;