diff options
| author | nasr <nsrddyn@gmail.com> | 2026-03-05 22:42:55 +0000 |
|---|---|---|
| committer | nasr <nsrddyn@gmail.com> | 2026-03-05 22:42:55 +0000 |
| commit | d8c52d6c408a172f1210c77df3e3a9629ea68dc6 (patch) | |
| tree | 8125ad25c4b9a1a94d8a77b4daa19ca06479fc1d /source | |
| parent | aa2bee82ac82ff47c6be84f2e6d39c690ec66a21 (diff) | |
feature(main): helper functions for lexing
refactor(main): helper script for testing to gitignore
Diffstat (limited to 'source')
| -rw-r--r-- | source/base/base_string.h | 9 | ||||
| -rw-r--r-- | source/engine/engine.c | 9 | ||||
| -rw-r--r-- | source/lexer/lexer.c | 74 | ||||
| -rw-r--r-- | source/storage/csv_reader.c | 8 | ||||
| -rw-r--r-- | source/storage/csv_reader.h | 8 |
5 files changed, 89 insertions, 19 deletions
diff --git a/source/base/base_string.h b/source/base/base_string.h index 64a3162..189b38a 100644 --- a/source/base/base_string.h +++ b/source/base/base_string.h | |||
| @@ -47,4 +47,13 @@ string8_append_char(string8 *buf, u8 c) | |||
| 47 | buf->size += 1; | 47 | buf->size += 1; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | read_only global_variable | ||
| 51 | string8 nil_string = | ||
| 52 | { | ||
| 53 | |||
| 54 | .data = NULL, | ||
| 55 | .size = 0, | ||
| 56 | |||
| 57 | }; | ||
| 58 | |||
| 50 | #endif /* BASE_STRING_H */ | 59 | #endif /* BASE_STRING_H */ |
diff --git a/source/engine/engine.c b/source/engine/engine.c index ada4ecb..05c143c 100644 --- a/source/engine/engine.c +++ b/source/engine/engine.c | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #define BASE_UNITY | 1 | #define BASE_UNITY |
| 2 | #include "../base/base_include.h" | 2 | #include "../base/base_include.h" |
| 3 | 3 | ||
| 4 | #include <stdio.h> | ||
| 5 | |||
| 4 | #include "../lexer/lexer.h" | 6 | #include "../lexer/lexer.h" |
| 5 | #include "../lexer/lexer.c" | 7 | #include "../lexer/lexer.c" |
| 6 | 8 | ||
| @@ -13,17 +15,14 @@ | |||
| 13 | #include "../storage/csv_reader.h" | 15 | #include "../storage/csv_reader.h" |
| 14 | #include "../storage/csv_reader.c" | 16 | #include "../storage/csv_reader.c" |
| 15 | 17 | ||
| 16 | #if 1 | ||
| 17 | #include <stdio.h> | ||
| 18 | #endif | ||
| 19 | |||
| 20 | 18 | ||
| 21 | int main(int c, char **v) | 19 | int main(int c, char **v) |
| 22 | { | 20 | { |
| 23 | if(c < 2) return -999; | 21 | if(c < 2) return -999; |
| 24 | 22 | ||
| 25 | string8 buffer = load_file(v[1]); | 23 | string8 buffer = load_file(v[1]); |
| 26 | read_csv(buffer); | 24 | // read_csv(buffer); |
| 25 | tokenize_csv(buffer); | ||
| 27 | 26 | ||
| 28 | 27 | ||
| 29 | // for(;;) | 28 | // for(;;) |
diff --git a/source/lexer/lexer.c b/source/lexer/lexer.c index 8182c5a..1c7ab38 100644 --- a/source/lexer/lexer.c +++ b/source/lexer/lexer.c | |||
| @@ -1,10 +1,80 @@ | |||
| 1 | internal b32 | ||
| 2 | is_alpha(u8 point) | ||
| 3 | { | ||
| 4 | return ((point >= 'a' && point <= 'z') || | ||
| 5 | (point >= 'A' && point <= 'Z') || | ||
| 6 | (point == '_')); | ||
| 7 | } | ||
| 8 | |||
| 9 | internal b32 | ||
| 10 | is_digit(u8 point) | ||
| 11 | { | ||
| 12 | return (point >= '0' && point <= '9'); | ||
| 13 | } | ||
| 14 | |||
| 15 | internal b32 | ||
| 16 | is_alpha_num(u8 point) | ||
| 17 | { | ||
| 18 | return (is_alpha(point) || is_digit(point)); | ||
| 19 | } | ||
| 20 | |||
| 21 | internal b32 | ||
| 22 | is_whitespace(u8 point) | ||
| 23 | { | ||
| 24 | return (point == '\n' || point == '\r' || | ||
| 25 | point == ' ' || point == '\t'); | ||
| 26 | } | ||
| 27 | |||
| 28 | internal b32 | ||
| 29 | is_delimiter(u8 point) | ||
| 30 | { | ||
| 31 | |||
| 32 | return (point == ','); | ||
| 33 | |||
| 34 | } | ||
| 35 | |||
| 1 | internal token * | 36 | internal token * |
| 2 | tokenize_csv(string8 buffer) | 37 | tokenize_csv(string8 buffer) |
| 3 | { | 38 | { |
| 39 | i32 count = 0; | ||
| 40 | string8 **tokens = PushArray(arena, string8 *, buffer.size / 10); | ||
| 41 | |||
| 4 | if(buffer.size < 0) return NULL; | 42 | if(buffer.size < 0) return NULL; |
| 5 | for(i32 index = 0; | 43 | for(i32 index = 0; |
| 6 | buffer.data[index] != '\0' | 44 | buffer.data[index] != '\0'; |
| 7 | ;) | 45 | ++index) |
| 46 | { | ||
| 47 | string8 tokens = {0}; | ||
| 48 | |||
| 49 | u8 point = buffer.data[index]; | ||
| 50 | if(is_whitespace(point)) continue; | ||
| 51 | |||
| 52 | u8 *start = &buffer.data; | ||
| 53 | |||
| 54 | if(is_delimiter(point)) | ||
| 55 | { | ||
| 56 | |||
| 57 | |||
| 58 | } | ||
| 59 | |||
| 60 | u8 *end = start - 1; | ||
| 61 | |||
| 62 | unused(start); | ||
| 63 | unused(end); | ||
| 64 | |||
| 65 | switch (point) | ||
| 66 | { | ||
| 67 | |||
| 68 | default: | ||
| 69 | { | ||
| 70 | printf("point: %c\n", point); | ||
| 71 | count++; | ||
| 72 | } | ||
| 73 | } | ||
| 74 | |||
| 75 | } | ||
| 76 | |||
| 77 | printf("%d", count); | ||
| 8 | 78 | ||
| 9 | return NULL; | 79 | return NULL; |
| 10 | } | 80 | } |
diff --git a/source/storage/csv_reader.c b/source/storage/csv_reader.c index a06e9c4..2fcbe04 100644 --- a/source/storage/csv_reader.c +++ b/source/storage/csv_reader.c | |||
| @@ -1,15 +1,7 @@ | |||
| 1 | #define STD_TEST | ||
| 2 | #if defined(STD_TEST) | ||
| 3 | #include <stdio.h> | ||
| 4 | #endif | ||
| 5 | |||
| 6 | internal void | 1 | internal void |
| 7 | read_csv(string8 buffer) | 2 | read_csv(string8 buffer) |
| 8 | { | 3 | { |
| 9 | #if defined(STD_TEST) | ||
| 10 | printf("\nsize:%lu\ndata %s\n", buffer.size, buffer.data); | 4 | printf("\nsize:%lu\ndata %s\n", buffer.size, buffer.data); |
| 11 | #endif | ||
| 12 | 5 | ||
| 13 | } | 6 | } |
| 14 | 7 | ||
| 15 | |||
diff --git a/source/storage/csv_reader.h b/source/storage/csv_reader.h index 711499f..36e07a4 100644 --- a/source/storage/csv_reader.h +++ b/source/storage/csv_reader.h | |||
| @@ -23,8 +23,8 @@ struct csv_table | |||
| 23 | read_only global_variable | 23 | read_only global_variable |
| 24 | csv_row nil_csv_row = | 24 | csv_row nil_csv_row = |
| 25 | { | 25 | { |
| 26 | .fields = {NULL, 0}, | 26 | .fields = &nil_string, |
| 27 | .count = 0, | 27 | .count = 0, |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | 30 | ||
| @@ -32,8 +32,8 @@ csv_row nil_csv_row = | |||
| 32 | read_only global_variable | 32 | read_only global_variable |
| 33 | csv_table nil_csv_table = | 33 | csv_table nil_csv_table = |
| 34 | { | 34 | { |
| 35 | .string8 = {NULL, 0}, | 35 | .headers = &nil_string, |
| 36 | .csv_row = &nil_csv_row, | 36 | .rows = &nil_csv_row, |
| 37 | .col_count = 0, | 37 | .col_count = 0, |
| 38 | .row_count = 0, | 38 | .row_count = 0, |
| 39 | }; | 39 | }; |
