diff options
Diffstat (limited to 'src/bootstrap/tokenizer.src')
| -rw-r--r-- | src/bootstrap/tokenizer.src | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/src/bootstrap/tokenizer.src b/src/bootstrap/tokenizer.src index 751a0ac..38899aa 100644 --- a/src/bootstrap/tokenizer.src +++ b/src/bootstrap/tokenizer.src @@ -1,6 +1,50 @@ -extern printf = (*i8, varargs) => void; +import "!stdlib.src"; -let test = () => i64 { - printf("HELLO\n"); - return 2; +let file_size = 0; +let file = 0; +let buf = 0; + +let read_file = (filename: *i8) => *i8 { + file = fopen(filename, "r"); + + fseek(file, 0, 2); + file_size = ftell(file); + fseek(file, 0, 0); + + buf = malloc(file_size + 1); + + let bytes_read = fread(buf, 1, file_size, file); + (*(buf + bytes_read)) = '\0'; + + return buf; +}; + +let tokenizer_init = (filename: *i8) => i64 { + let buf = read_file(filename); + + println("File size: %d", file_size); + + println("%s", buf); + + let i = 0; + while i < file_size { + let c = (*(buf + i)); + + if c == '}' { + println("BRACE!"); + }; + + println("C: %c", c); + + i = i + 1; + }; + + return 0; +}; + +let tokenizer_deinit = () => i64 { + free(buf); + fclose(file); + + return 0; }; |