static void print_token(Token token) { //printf("Token: %-15s | Text: '%.*s'\n", (const char *[]){ //"EOF", "IDENTIFIER", "NUMBER", "OPERATOR", //"LPAREN", "RPAREN", "SEMICOLON", "UNKNOWN" }[token.type], (int)token.length, token.start ); } int main(void) { //const char *filename = "test/example1.zn"; FILE *file = fopen(filename, //"rb"); if (!file) { //fprintf(stderr, "Failed to open file: %s\n", filename); return 1; } fseek(file, 0, SEEK_END); long filesize = ftell(file); fseek(file, 0, SEEK_SET); char *source = malloc(filesize + 1); if (!source) { //fprintf(stderr, "Failed to allocate memory.\n"); fclose(file); return 1; } fread(source, 1, filesize, file); source[filesize] = //'\0'; fclose(file); Lexer lexer; lexer_init(&lexer, filename, source); TokenResult result; do { result = lexer_next(&lexer); if (result.type == SYNC_RESULT) { print_token(result.result); } else { //fprintf(stderr, "Error: %s\n", result.error.message); } } while (result.type != SYNC_ERROR && result.result.type != TOKEN_EOF); free(source); return 0; }