Ready to rebase
This commit is contained in:
78
src/runner.c
78
src/runner.c
@ -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;
|
||||
}
|
Reference in New Issue
Block a user