Ready to rebase

This commit is contained in:
Scarlett
2025-04-25 17:25:38 -04:00
parent 49a0330d08
commit 666f688238
5 changed files with 92 additions and 0 deletions

View File

@ -108,6 +108,26 @@ int run(FILE *alpha) {
fprintf(stderr, "INPUT FILE NOT FOUND\n");
return -1;
}
char *line;
int i = 1;
while ((line = file_read_line(alpha)) != NULL) {
CodeLine *code_line = malloc(sizeof(CodeLine));
code_line->line_number = i;
code_line->line = malloc(strlen(line) + 1);
strcpy(code_line->line, line);
code_line->next = NULL;
code_line->is_error = false;
append_code_line(code_line);
free(line);
i++;
}
fseek(alpha, 0, SEEK_SET);
// print_code_lines();
yyin = alpha;
yyparse();
@ -225,3 +245,61 @@ int is_alpha_file(char *alpha, int file_len) {
}
return 0; // is alpha file
}
void insert_code_line(char *line, int line_number) {
}
void append_code_line(CodeLine *code_line) {
if (code_line == NULL) return;
if (code_head == NULL) {
code_head = code_line;
} else {
CodeLine *current = code_head;
while (current->next != NULL) {
current = current->next;
}
current->next = code_line;
}
}
void print_code_lines() {
CodeLine *current = code_head;
while (current != NULL) {
printf("%d %03d: %s",current->line_number, current->line);
current = current->next;
}
}
char *file_read_line(FILE *fp) {
if (fp == NULL) return NULL;
size_t size = 128;
size_t len = 0;
char *str = malloc(size);
if (!str) return NULL;
int c;
while ((c = fgetc(fp)) != EOF) {
if (len + 1 >= size) {
size *= 2;
char *new_buffer = realloc(str, size);
if (!new_buffer) {
free(str);
return NULL;
}
str = new_buffer;
}
str[len++] = (char)c;
if (c == '\n') break;
}
if (len == 0 && c == EOF) {
free(str);
return NULL;
}
str[len] = '\0';
return str;
}