:import "utils/utils.tnsl" :import "parse/parse.tnsl" :import "compile/compile.tnsl" ~uint8 DEFAULT_FOUT = "out.asm\0" ~uint8 USAGE = " TNSLC v0.7.0 (C) 2026 CircleShift (MPL 2.0) usage: tnslc [options] (file in) options: -o [output file] Sets the file to output asm code to (default is \"out.asm\") -p Print the parse tree and exit without compiling -m Print the module tree and exit without compiling \0" ~uint8 FOPEN_ERR = "Error opening file\n\0" ~uint8 char_str = "%c\0" ~uint8 newline = "\n\0" /; main (int argc, ~~uint8 argv) [int] asm "mov r10, rdi" asm "mov r11, rsi" /; if (argc < 2) _printf(USAGE) return 1 ;/ utils.File fin, fout int arg_counter = 1 int mode = 0 ~uint8 first_str = argv{arg_counter} /; if (first_str{0} == '-') /; if (utils.strcmp(argv{arg_counter}, "-p\0") == true) mode = 1 arg_counter++ ;; else if (utils.strcmp(argv{arg_counter}, "-m\0") == true) mode = 2 arg_counter++ ;; else if (utils.strcmp(argv{arg_counter}, "-o\0") == true) arg_counter++ /; if (arg_counter !< argc) _printf(USAGE) return 1 ;/ fout.init(argv{arg_counter}) ;; else fout.init(DEFAULT_FOUT) ;/ ;/ /; if (arg_counter !< argc) _printf(USAGE) return 1 ;/ fin.init(argv{arg_counter}) /; if (mode == 0) compile.generate(~fin, ~fout) fout.end() ;; else if (mode == 1) compile.parse_tree(~fin) ;; else if (mode == 2) compile.mod_tree(~fin) ;/ fin.end() return 0 ;/