import "@std/debug" import "@std/mem" test import "@std/enums" test import "@std/arraylist" test import "@std/hashmap" test import "@std/strmap" import "@source/strpool" import "@source/lexer" test import "@source/strpool" test import "@source/lexer" program :: `# these are immutable `x :: 32 `y :: 3.2 ` `# these are mutable `z u32 = 54 ` `# keywords `if `else `for `while `proc `return ` `main proc() void {} main proc() void { strpool.strings = strpool.init(mem.c_allocator) defer strpool.deinit(&strpool.strings) debug.print("PROGRAM::[[\n{}\n]]\n\n", {program}) scan_state lexer.State = lexer.init(mem.c_allocator) defer lexer.deinit(&scan_state) lexer.scan(&scan_state, program) catch |err| { debug.print("failed to scan: {}\n", {err}) return } debug.print("TOKENS::[[\n", {}) for scan_state.tokens.items |token| { debug.print("{}\n", {token.kind}) } debug.print("]]\n", {}) }