TODO (1303B)
1 @next 2 3 [x] variables, string first, so that we can print its content; 4 [x] conditionals (basic) 5 [x] loops (basic) 6 [x] handle for loop with `i = i + 1` and `i += 1` (see ex-for-simple2 and TODO NODE_BINARY_EXPR) 7 [x] printing `-5` crashes, I think parsing is wrong for `-`, sees as value 5 8 [x] print allow more than 1 arg 9 [x] handle return values 10 [ ] print allow format 11 [x] print anything else than a string 12 [x] call another function from main, that prints something, 13 [x] call another function that prints the passed argument 14 [x] if without { } should be an error, e.g. `if(true) break;` doesn't work 15 [ ] inner blocks are ignored completely { { } } 16 [ ] while loops 17 18 @later 19 20 [-] implement all or most of C's into libgccjit 21 [-] ARC memory management, new keyword. 22 @cruft 23 24 [x] redo arguments as list and not linked list, handle in parse and in gen (2 places in gen?) 25 [x] get rid of count_args and search for 'argc' 26 [ ] clean up symbols table from parsing to jit time 27 28 @notes 29 30 to get specific access to float sizes, gccjit@16 is required, which can't be easily built on macOS atm. 31 32 CC_JIT_TYPE_FLOAT16 33 GCC_JIT_TYPE_FLOAT32 34 GCC_JIT_TYPE_FLOAT64 35 GCC_JIT_TYPE_FLOAT128 36 37 otherwise these are target platform dependent 38 39 GCC_JIT_TYPE_FLOAT 40 GCC_JIT_TYPE_DOUBLE 41 GCC_JIT_TYPE_LONG_DOUBLE