diff options
| author | Baitinq <[email protected]> | 2025-04-10 22:41:36 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-04-10 22:41:36 +0200 |
| commit | b493ff5aa3f5167b4bf8c3d97885025f10fdb0bc (patch) | |
| tree | e7335139baff50a8e8bffcd9c91c8b4a058a032b /src/bootstrap/main.src | |
| parent | Codegen: Improve tracking of node types (diff) | |
| download | interpreter-b493ff5aa3f5167b4bf8c3d97885025f10fdb0bc.tar.gz interpreter-b493ff5aa3f5167b4bf8c3d97885025f10fdb0bc.tar.bz2 interpreter-b493ff5aa3f5167b4bf8c3d97885025f10fdb0bc.zip | |
Bootstrap: Iterate chars
Diffstat (limited to 'src/bootstrap/main.src')
| -rw-r--r-- | src/bootstrap/main.src | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/src/bootstrap/main.src b/src/bootstrap/main.src index 518612b..b953e3d 100644 --- a/src/bootstrap/main.src +++ b/src/bootstrap/main.src @@ -9,23 +9,48 @@ extern fclose = (*i8) => *i8; extern malloc = (i64) => *i8; extern free = (*i8) => void; -let main = (argc: i64, argv: **i8) => i64 { - let filename = *(argv + 1); +let file_size = 0; +let file = 0; +let buf = 0; - printf("%s\n", filename); +let read_file = (filename: *i8) => *i8 { + file = fopen(filename, "r"); - let file = fopen(filename, "r"); - fseek(file, 0, 2); - let file_size = ftell(file); + file_size = ftell(file); fseek(file, 0, 0); - let buf = malloc(file_size + 1); + buf = malloc(file_size + 1); let bytes_read = fread(buf, 1, file_size, file); (*(buf + bytes_read)) = '\0'; - printf("%s", buf); + return buf; +}; + +let main = (argc: i64, argv: **i8) => i64 { + let filename = *(argv + 1); + + printf("%s\n", filename); + + let buf = read_file(filename); + + printf("File size: %d\n", file_size); + + printf("%s", buf); + + let i = 0; + while i < file_size { + let c = (*(buf + i)); + + if c == '}' { + printf("BRACE!\n"); + }; + + printf("C: %c\n", c); + + i = i + 1; + }; free(buf); fclose(file); |