aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authors-over-42023-06-21 16:34:22 -0400
committers-over-42023-06-21 16:34:22 -0400
commit46f4397bf0718fbaf2cee5b4ffd56d4a36f2c4d8 (patch)
tree9e582eef34f67fd47117445e22a316e6c855ad5d /src/main.c
parent069204d6151326acc77bfd1f9072bd19882b948a (diff)
NO MORE MEMORY LEAKS :D
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c45
1 files changed, 20 insertions, 25 deletions
diff --git a/src/main.c b/src/main.c
index 915078f..a054b16 100644
--- a/src/main.c
+++ b/src/main.c
@@ -7,48 +7,43 @@
int main(int argc, char* argv[]) {
- FILE* fsource;
- long fsource_size;
- char* source;
+ FILE* fsource;
+ long fsource_size;
+ char* source;
+ lexer_t* lexer;
+ int in_file;
fsource = fopen(argv[1], "rb");
- if (!fsource) {
- die("source file not found");
- };
-
+ if (!fsource) { free(fsource); die("source file not found"); };
fseek(fsource, 0L, SEEK_END);
fsource_size = ftell(fsource);
rewind(fsource);
-
source = calloc(1, fsource_size + 1);
-
- if (!source) {
- fclose(fsource);
- die("calloc failed");
- }
-
- if (1 != fread(source, fsource_size, 1, fsource)) {
- fclose(fsource);
- free(source);
- die("could not read source");
- }
-
+ if (!source) { fclose(fsource); free(source); die("calloc failed"); }
+ if (1 != fread(source, fsource_size, 1, fsource)) { fclose(fsource); free(source); die("could not read source"); }
log_inf("source file loaded");
- lexer_t* lexer = lexer_init(source);
+ lexer = lexer_init(source);
log_inf("lexer created");
log_inf("BEGIN INPUT");
log_raw(lexer->content);
log_inf("END INPUT");
- token_t* token = NULL;
+ in_file = 1;
+
+ while (in_file) {
+ token_t* token;
+
+ token = lexer_get_next_token(lexer);
+ log_inf("token type: [%02d]\t\ttoken value: [%s]", token->type, token->value);
+ (token->type == TOKEN_EOF) && (in_file = 0);
- while ((token = lexer_get_next_token(lexer)) != NULL) {
- log_inf("token type: [%s]\t\ttoken value: [%s]", token_get_type(token->type), token->value);
- free(token);
+ token_destroy(token);
}
+ // clean up
+ lexer_destroy(lexer);
fclose(fsource);
free(source);