From e5d6d76e803a8ea7ae86cd8302826bbfc6bd57fa Mon Sep 17 00:00:00 2001 From: nasr Date: Mon, 9 Mar 2026 19:42:39 +0000 Subject: refactor(main): fixed compilation bugs, and csv invalidtion handling --- source/csv_parser.c | 6 ------ source/engine.c | 2 +- source/lexer.c | 44 +++++++++++++++----------------------------- source/lexer.h | 4 +--- 4 files changed, 17 insertions(+), 39 deletions(-) diff --git a/source/csv_parser.c b/source/csv_parser.c index 048e089..6679d2f 100644 --- a/source/csv_parser.c +++ b/source/csv_parser.c @@ -22,11 +22,5 @@ internal csv_table * parse_csv(token *tokens, csv_table *table) { - - - - - - return NULL; } diff --git a/source/engine.c b/source/engine.c index 8f701e3..fe609e9 100644 --- a/source/engine.c +++ b/source/engine.c @@ -13,7 +13,7 @@ int main(int c, char **v) { if(c < 2) return -999; - b32 running = 0; + local_persist b32 running = 1; mem_arena *global_arena = arena_create(MiB(30)); csv_table *global_table = PushStruct(global_arena, csv_table); diff --git a/source/lexer.c b/source/lexer.c index c84a831..decfb7a 100644 --- a/source/lexer.c +++ b/source/lexer.c @@ -34,61 +34,47 @@ is_delimiter(u8 point) internal token * tokenize_csv(string8 buffer, mem_arena *arena) { - s32 count = 0; - string8 **tokens = PushString(arena, buffer.size); b32 FL = TRUE; if(buffer.size < 0) return NULL; - for(s32 index = 0; - buffer.data[index] != '\0'; - ++index) + for(s32 index = 0; buffer.data[index] != '\0'; ++index) { - csv_row *row = PushStruct(arena, csv_row); token *tok = PushStruct(arena, token); - u8 point = buffer.data[index]; - u8 *start = buffer.data; - u8 *end = NULL; + s32 start = 0; + s32 end = 0; - unused(row); + if(is_whitespace(point)) + { + print("csv file is invalid"); + return NULL; + } switch(point) { case('\n'): { - - if(FL) - { - FL = FALSE; - tok->flags |= END_FL; - } - + if(FL) tok->flags |= END_FL; break; - } case(','): { - end = start - 1; + end = index - 1; + start = index + 1; break; } - default: { - printf("point: %c\n", point); - count++; break; } } - token->lexeme = String8Cast(start, end - start); - - *tokens = token; - ++tokens; - - - return NULL; + tok->lexeme = String8Cast(&buffer.data[start], end - start); + tok->next = tok; } + + return NULL; } diff --git a/source/lexer.h b/source/lexer.h index 7bafc0d..c950a58 100644 --- a/source/lexer.h +++ b/source/lexer.h @@ -16,7 +16,6 @@ enum token_type TOKEN_UNDEFINED = 255, TOKEN_IDENTIFIER, TOKEN_VALUE, - }; typedef struct token token; @@ -25,8 +24,7 @@ struct token string8 lexeme; token_type type; token_flags flags; + token *next; }; - - #endif /* ENGINE_LEXER_H */ -- cgit v1.3