summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authornasr <nsrddyn@gmail.com>2026-03-05 22:42:55 +0000
committernasr <nsrddyn@gmail.com>2026-03-05 22:42:55 +0000
commitd8c52d6c408a172f1210c77df3e3a9629ea68dc6 (patch)
tree8125ad25c4b9a1a94d8a77b4daa19ca06479fc1d /source
parentaa2bee82ac82ff47c6be84f2e6d39c690ec66a21 (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.h9
-rw-r--r--source/engine/engine.c9
-rw-r--r--source/lexer/lexer.c74
-rw-r--r--source/storage/csv_reader.c8
-rw-r--r--source/storage/csv_reader.h8
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
50read_only global_variable
51string8 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
21int main(int c, char **v) 19int 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 @@
1internal b32
2is_alpha(u8 point)
3{
4 return ((point >= 'a' && point <= 'z') ||
5 (point >= 'A' && point <= 'Z') ||
6 (point == '_'));
7}
8
9internal b32
10is_digit(u8 point)
11{
12 return (point >= '0' && point <= '9');
13}
14
15internal b32
16is_alpha_num(u8 point)
17{
18 return (is_alpha(point) || is_digit(point));
19}
20
21internal b32
22is_whitespace(u8 point)
23{
24 return (point == '\n' || point == '\r' ||
25 point == ' ' || point == '\t');
26}
27
28internal b32
29is_delimiter(u8 point)
30{
31
32 return (point == ',');
33
34}
35
1internal token * 36internal token *
2tokenize_csv(string8 buffer) 37tokenize_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
6internal void 1internal void
7read_csv(string8 buffer) 2read_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
23read_only global_variable 23read_only global_variable
24csv_row nil_csv_row = 24csv_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 =
32read_only global_variable 32read_only global_variable
33csv_table nil_csv_table = 33csv_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};