dont mess up silly

This commit is contained in:
Scarlett
2025-05-04 18:58:17 -04:00
parent 3f7c79b801
commit d57fa081d7
4 changed files with 20 additions and 2 deletions

View File

@ -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,

View File

@ -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) {

View File

@ -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;

View File

@ -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;