diff options
| author | Baitinq <[email protected]> | 2025-05-12 23:07:30 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-05-12 23:07:30 +0200 |
| commit | c36074b1e095d50ed085f9d3c60f01d051c9c232 (patch) | |
| tree | 7dc1889c25882eb0016ebc7fb48ec9f44e417943 /src/bootstrap | |
| parent | std: Add strcmp (diff) | |
| download | pry-lang-c36074b1e095d50ed085f9d3c60f01d051c9c232.tar.gz pry-lang-c36074b1e095d50ed085f9d3c60f01d051c9c232.tar.bz2 pry-lang-c36074b1e095d50ed085f9d3c60f01d051c9c232.zip | |
boostrap: tokenizer: clean
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/tokenizer.src | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/bootstrap/tokenizer.src b/src/bootstrap/tokenizer.src index 38899aa..1583a6d 100644 --- a/src/bootstrap/tokenizer.src +++ b/src/bootstrap/tokenizer.src @@ -4,6 +4,9 @@ let file_size = 0; let file = 0; let buf = 0; + +let offset = 0; + let read_file = (filename: *i8) => *i8 { file = fopen(filename, "r"); @@ -19,6 +22,22 @@ let read_file = (filename: *i8) => *i8 { return buf; }; +let tokenizer_next = () => *i8 { + if offset >= file_size { + return "EOF"; + }; + + let c = (*(buf + offset)); + + offset = offset + 1; + + let t = malloc(2); + (*(t + 0)) = c; + (*(t + 1)) = '\0'; + + return t; +}; + let tokenizer_init = (filename: *i8) => i64 { let buf = read_file(filename); @@ -26,17 +45,13 @@ let tokenizer_init = (filename: *i8) => i64 { println("%s", buf); - let i = 0; - while i < file_size { - let c = (*(buf + i)); - - if c == '}' { - println("BRACE!"); + while true { + let t = tokenizer_next(); + if strcmp(t, "EOF") { + return 0; }; - - println("C: %c", c); - - i = i + 1; + println("%s", t); + free(t); }; return 0; |